#node.js #reactjs #react-native #dgrams
Вопрос:
У меня возникла проблема с тем, что я использую сокет, и мне нужно возвращать значение, когда прослушиватель сокетов получает его. Вот что я сделал до сих пор:
function getIP(mdns) {
let time = 0
const closeSocket = (sock) => {
sock.close()
console.log('socket closed!')
}
const checkSocket = (sock) => {
time
if (time > 3) {
closeSocket(socket)
}
else {
setTimeout(() => checkSocket(sock), 10)
}
}
let address = ''
let socket = dgram.createSocket('udp4')
socket.bind(portNum)
socket.once('listening', () => {
socket.send(bytes, 0, bytes.length, ListeningPort, ipAddress)
checkSocket(socket)
})
socket.on('message', (msg, rinfo) => {
var msginCar = msg.map(item => String(item))
let msgBody = msg
let msgString = ''
let localMDNS
for (let i = 0; i < msgBody.length; i ) {
msgString = msgString String.fromCharCode(msgBody[i])
}
localMDNS = msgString.substr(13, 8)
if (localMDNS === mdns) {
address = rinfo.address
}
closeSocket(socket)
}
return address
}
теперь вы видите эту розетку.on дает мне rinfo только тогда, когда он его получает, поэтому функция getIP возвращает мне пустую строку. Есть идеи, как я могу справиться с этой проблемой? Спасибо