4

特定のソケット 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);
4

6 に答える 6

2

更新: socket.io-1.4 では、ソケット ID の先頭に「/#」を追加する必要があります (現在は機能しないことに非常にイライラします)。バックエンドから接続されているすべてのソケットを io.sockets.connected として表示することもできます

io.to( "/#" + socket_id).emit("event_name",{data:true})
于 2016-03-19T00:24:54.260 に答える
2

これを行う別の方法は次のとおりです。

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;
            }
        }
    });

それが多少役立つことを願っています。

于 2013-10-13T04:09:34.513 に答える
0

これはうまくいくはずです:

servio.sockets.sockets[playId].emit(...)
于 2013-10-12T12:07:18.740 に答える