gpt4 book ai didi

javascript - Socket.io 向房间广播在 socket.io v.0.9.13 中不起作用

转载 作者:搜寻专家 更新时间:2023-11-01 00:15:35 25 4
gpt4 key购买 nike

socket.broadcast.to(newroom).emit('updatechat', 'SERVER', socket.username+' has joined this room');

没有击中客户端。我只能看到消息来自:

socket.emit('updateActivity', 'SERVER', 'you have CONNECTED to '+ socketEntity.roomName);

我是否对 socket.join() 做错了什么?

我还尝试给广播事件取一个不同的名称而不是 updateActivity,但它也不起作用。

日志输出中根本没有提及广播发射。

问题更新:

我找到了一个解决方案,如果我将 broadcast.to() 替换为以下代码片段,它就会起作用:

socket.get(socketEntity.roomId, function (error, room) {
io.sockets.in(room).emit('updateActivity', 'SERVER', 'you -joined- this group '+ socketEntity.roomName);
});

但我现在不知道为什么会这样......所以不知何故 上面的 io.sockets.in() 的 room 参数不是 与字符串 socketEntity.roomId 相同吗?

原始代码:

服务器:

io.sockets.on ('connection', function (socket){
socket.on('joinRoom', function(socketEntity){
socket.join(socketEntity.roomId);
socket.emit('updateActivity', 'SERVER', 'you have CONNECTED to '+ socketEntity.roomName);
socket.broadcast.to(socketEntity.roomId).emit('updateActivity', 'SERVER', 'you -joined- this room'+ socketEntity.roomName);
});
});

客户:

HTML:
<ul id="activityList" class="dropdown-menu"></ul>
脚本:
$(document).ready(function(){
var socketEntity = {roomId:sampleRmId, roomName: "sample room"}
socket.emit('joinRoom', socketEntity);


socket.on('updateActivity', function (username, data){
$('#activityList').prepend('<li><a href="#"><div>'+ data +'</div></a></li>');
});
})

最佳答案

socket.broadcast 会将消息发送给除被调用的客户端之外的所有其他客户端。

socket.emit 只发送给那个特定的客户端

io.sockets.emit 发送给所有客户端

关于javascript - Socket.io 向房间广播在 socket.io v.0.9.13 中不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15642254/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com