socket.io v2升v3后io.sockets.in(room).emit触发EVENT属性未定义错误求助
Socket.io v3 版本房间广播API适配方案
错误原因
Socket.io v3 对广播相关API做了不兼容升级,v2中io.sockets.in(room).emit()的链式调用逻辑已被废弃,底层没有对应属性支撑才会触发读取EVENT属性失败的报错。
适配后的正确写法
原v2版本代码:
io.sockets.in(room).emit(bag.message.eventType, message)
在v3版本中直接替换为如下代码即可实现完全相同的功能:
io.to(room).emit(bag.message.eventType, message)
也可以使用等价写法:
io.in(room).emit(bag.message.eventType, message)
补充场景说明
如果你的业务场景需要排除当前触发事件的socket连接,仅给房间内其他连接推送消息,可以直接调用对应socket实例的to方法:
socket.to(room).emit(bag.message.eventType, message)
内容的提问来源于stack exchange,提问作者Abhishek
相关产品推荐
相关产品推荐

