为了账号安全,请及时绑定邮箱和手机立即绑定

Socket.io join() 什么都不做

Socket.io join() 什么都不做

噜噜哒 2023-07-20 10:24:32
我在 socket.io 中加入房间时似乎遇到问题。socket.join() 似乎什么也没做。这是我的服务器端代码io.on('connection', function (socket) {console.log('connected');socket.on('joinRoom', function (data) {    console.log("Joining room")    socket.join("room1",function(){        console.log("Joined room")    })    socket.to('room1').emit('roomJoined', 'SERVER',' has connected to this room');});socket.on('acknowledge', function (data) {    console.log(socket.room)});socket.on('disconnect', () => {   console.log("disconnected")  });});我可以确认“joinRoom”事件已被触发,因为我可以在控制台中看到“加入房间”,但未打印“加入房间”。此外,在客户端,“roomJoined”事件不会被触发。如果我改变socket.to('room1').emit('roomJoined', 'SERVER',' has connected to this room'); 到socket.emit('roomJoined', 'SERVER',' has connected to this room');然后客户端触发 roomJoined 事件,证明套接字没有加入房间。提前致谢
查看完整描述

2 回答

?
jeck猫

TA贡献1909条经验 获得超7个赞

既然您已经找到了工作解决方案,我将解释原因......

正如评论中所述,在 Socket.IO 3.0 中,该socket.join方法是同步的,并且不接受回调。至于为什么您的客户端没有收到“joinedRoom”事件......

好吧,在 Socket.IO 的所有版本中,socket.to并且socket.in不会向您正在调用的套接字发送任何内容socket.tosocket.in)。


查看完整回答
反对 回复 2023-07-20
?
潇湘沐

TA贡献1816条经验 获得超6个赞

Nvm 我发现使用 socket.to() 而不是 io.to() 的错误。改变

socket.to('room1').emit('roomJoined', 'SERVER',' has connected to this room');

io.to('room1').emit('roomJoined', 'SERVER',' has connected to this room');

为我工作。


查看完整回答
反对 回复 2023-07-20
  • 2 回答
  • 0 关注
  • 137 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信