ttb*_*ack 2 javascript node.js socket.io
socket.broadcast.to(newroom).emit('updatechat', 'SERVER', socket.username+' has joined this room');
Run Code Online (Sandbox Code Playgroud)
没有打到客户端.我只能看到来自的消息:
socket.emit('updateActivity', 'SERVER', 'you have CONNECTED to '+ socketEntity.roomName);
Run Code Online (Sandbox Code Playgroud)
我做错了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);
});
Run Code Online (Sandbox Code Playgroud)
但是我不知道为什么会出现这种情况......所以roomio.sockets.in()的参数在某种程度上isn't与字符串相同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);
});
});
Run Code Online (Sandbox Code Playgroud)
<ul id="activityList" class="dropdown-menu"></ul>
Run Code Online (Sandbox Code Playgroud)
JavaScript的:
$(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>');
});
})
Run Code Online (Sandbox Code Playgroud)
socket.broadcast 将消息发送给除被调用的客户端之外的所有其他客户端.
socket.emit 仅发送给该特定客户端
io.sockets.emit 发送给所有客户
| 归档时间: |
|
| 查看次数: |
2750 次 |
| 最近记录: |