发出到套接字 IO socket.id
Emit to Socket IO socket.id
我正在尝试向特定的套接字 ID 发出:
socket(user[playID]).emit('correct', data);
但我得到:
TypeError: object is not a function
如果我注销user[playID]
我会得到一个有效的套接字 ID。
赞赏!
这是我的设置,以防我错过了什么:。
// Tell Socket.io to pay attention
servio = io.listen(server);
// Tell HTTP Server to begin listening for connections on port 3250
sock = server.listen(3250);
这
应该可以做到
servio.sockets.socket(id).emit('hello');
这个答案涵盖了相同/相似的主题。简而言之,考虑自己保留对连接的客户端的引用,并根据需要向它们发出,而不是依赖 socket.io 的内部结构,这可能会发生变化。
每 http://socket.io/docs/rooms-and-namespaces/,
Socket.IO 中的每个套接字都由一个随机的、不可猜测的、 唯一标识符套接字#id。为了您的方便,每个插座 自动加入由此 ID 标识的聊天室。
您发出如下房间:
io.to('some room').emit('some event')
如果您只想向特定 socket.id 发出,只需将"某个房间"替换为关联的 id。
另一种方法是:
var players = [];
io.sockets.on('connection', function(socket){
socket.on('skt_init', function (data) {
var player = new Object();
player.id = data.id;
player.socket = socket.id;
players.push(player);
});
socket.on('disconnect', function() {
var len = 0;
for(var i=0, len=players.length; i<len; ++i ) {
var p = players[i];
if(p.socket == socket.id){
players.splice(i,1);
break;
}
}
});
socket.on('skt_event', function(data, id_player){
var len = 0;
for(var i=0, len=players.length; i<len; ++i ) {
var p = players[i];
if(p.id == id_player){
io.sockets.socket(p.socket).emit('correct', data);
break;
}
}
});
希望这有所帮助。
更新:在 socket.io-1.4 中,您必须在套接字 ID 前面加上"/#"(非常令人沮丧的是它现在不起作用(。 您还可以从后端查看所有连接的套接字,如io.sockets.connected
io.to( "/#" + socket_id).emit("event_name",{data:true})
这应该有效:
servio.sockets.sockets[playId].emit(...)
由于 socket.io 没有提供稳定的API来从套接字ID中获取套接字,因此您可以使用由套接字ID键控的对象来简单(轻松地(跟踪它们。
sockets_by_id = {}
io.on "connection", (socket)->
sockets_by_id[socket.id] = socket
sockets_by_id[socket_id].emit event, data...
(^咖啡脚本^(
相关文章:
- 如何将HTML id分配给元素,以及如何将JavaScript应用于元素
- difference between '$(<%= DDL.ID %>) & $('
- Socket.IO socket.id 更改同一客户端而不重新连接
- Socket.io:随时获取客户端会话 ID
- 插座.IO - 同一登录用户在两个不同浏览器中使用 socket.id
- 发出到套接字 IO socket.id
- 无法从带有 Socket.IO 的 Cookie 获取快速会话 ID
- 节点.JS Socket.IO 将数据包发送到特定连接 ID
- 如何从socket.io中的事件中获取套接字ID
- 获取用户id socket.io、护照、koa
- socket io重复更改socket.id
- 我可以将socket.io客户端id转换为稍短的id而不会遇到碰撞风险吗
- Socket.io如何获取房间id
- Socket.io如何获取id
- 通过socket.id向客户端发送消息
- Express - socket.IO会话.将用户id称为套接字id
- 套接字.Io:检查指定socket id的连接状态
- Laravel:当使用Brain Socket时如何在JS中隐藏/使用户id不可编辑
- 如何在Socket中订阅id以外的属性为真的实例室.io / SailsJS
- 使用socket.io的websockets无法从cookie中获取connection 's会话id