2

奇妙な問題があります。テストとして単純なSocket.IOエコーサーバーを作成していますが、send()メソッドを機能させることができません。サーバーでは、次のコードを使用しています。

var io = require('socket.io').listen(3000); 
var clients = {};

io.sockets.on('connection', function (socket) {     
        socket.send('test');

        socket.on('addclient', function(id) {
            socket.id = id;
            clients[id] = socket;
            console.log('New client connected: '+ id);
        });

        socket.on('echomessage', function(message) {
            console.log('Sending echo message to client '+ socket.id);
            socket.send(message);
        });

        socket.on('disconnect', function() {
            console.log('Client '+ socket.id + ' disconnected');
            delete clients[socket.id];
        });
});

send('test')は完全に機能していますが、echomessageイベントを発行すると、メッセージを受信しません。サーバー側またはクライアント側でエラーメッセージはまったく表示されません。

だから、クライアントサイドで私はこれを行います:

// Connect with the server (works, connection established)

// works too, I see it on the server
sock.emit('addclient', 1); 

// I see 'Sending echo message to client 1' on the server
sock.emit('echomessage', 'Echo this please');

しかし、私はメッセージをまったく受け取りません。

私は自分が間違っていることの手がかりをまったく持っていません。すべての助けに感謝します!

4

1 に答える 1

1

私はあなたのエラーがここのどこかにあると信じています:

    socket.on('addclient', function(id) {
        socket.id = id; // <-- 
        clients[id] = socket;
        console.log('New client connected: '+ id);
    });

socket.idこれは内部的なものであり、ソケットを使用する内部プロセスを台無しにする可能性があるため、変更しないでください。

それはsocket.io自体によって定義されます:ソース

于 2012-04-29T20:23:20.233 に答える