当接收器离线时,socket.io 发出不工作
Posted
技术标签:
【中文标题】当接收器离线时,socket.io 发出不工作【英文标题】:socket.io emit not working when the receiver is offline 【发布时间】:2021-11-04 06:57:21 【问题描述】:我想从用户那里接收值,将其更新到 MongoDb,然后将其转发给具有特定 targetId 的接收器。现在,当两个用户都在线时,它工作正常,但是当接收器离线时,应用程序崩溃并且错误是无法读取未定义的属性发射。请帮我解决这个问题。
socket.on('data',Accmsg =>
const findRsvpAndUpdate = (result,callback)=>
var value = summa.findOneAndUpdate(
$or:[sourceId:Accmsg.sourceId,targetId:Accmsg.targetId,sourceId: Accmsg.targetId,targetId: Accmsg.sourceId],
receive:Accmsg.receive,give:Accmsg.give,sourceId:Accmsg.sourceId,targetId:Accmsg.targetId,upsert: true,new:true,
function (error,results)
if (error)
callback(error);
else
callback(null, results);
)
findRsvpAndUpdate(Accmsg, (error, result) =>
if (error)
console.log(error);
else
console.log("The result is " +result);
try
let targetId = Accmsg.targetId;
clients[targetId].emit('clientAccount', Accmsg);// problem causing code line
catch (e)
console.log(e);
);
);
【问题讨论】:
在调用.emit()
之前检查clients[targetId]
是否未定义。
因为接收器没有连接所以clients[targetId]
不是socket。
【参考方案1】:
我解决了这个问题。我使用try catch
处理此错误,现在它工作正常。
【讨论】:
请添加更多详细信息以扩展您的答案,例如工作代码或文档引用。以上是关于当接收器离线时,socket.io 发出不工作的主要内容,如果未能解决你的问题,请参考以下文章
socket.io 在 x 秒/第一次尝试获取响应失败后停止重新发出事件