Javascript 发射到套接字IO Socket.id

Javascript 发射到套接字IO Socket.id,javascript,node.js,sockets,socket.io,Javascript,Node.js,Sockets,Socket.io,我正在尝试向特定套接字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 beg

我正在尝试向特定套接字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.sockets[playId].emit(...)

另一种方法是:

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;
            }
        }
    });
var玩家=[];
io.sockets.on('connection',函数(socket){
socket.on('skt_init',函数(数据){
var player=新对象();
player.id=data.id;
player.socket=socket.id;
球员。推(球员);
});
socket.on('disconnect',function(){
var-len=0;
对于(var i=0,len=players.length;i这应该可以

servio.sockets.socket(id).emit('hello');

覆盖相同或相似的主题。简而言之,考虑自己对连接的客户机的引用,并根据需要发送给它们,而不是依赖于Socket。IO的内部结构,这可能会改变。

< P>因为Sock.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...
(^CoffeeScript^)根据

Socket.IO中的每个套接字都由一个随机的、不可用的, 唯一标识符插座#id。为方便起见,每个插座 自动加入由此id标识的房间

您可以向以下房间发射:

io.to('some room').emit('some event')

如果您只想发送到一个特定的socket.id,只需将“some room”替换为相关的id即可。

更新:在socket.io-1.4中,您必须将“/#”前置到socket id(非常令人沮丧的是,它现在无法工作)。您还可以从后端将所有已连接的套接字视为io.sockets.connected

io.to( "/#" + socket_id).emit("event_name",{data:true})

不,我还是有同样的问题。