2012-04-26 10 views
2

私は奇妙な問題があります。単純なSocket.IOエコーサーバーをテストとして作成していますが、send()メソッドを動作させることはできません。私はこのコードの一部使用していますサーバーの場合:送信(「テスト」)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]; 
     }); 
}); 

を完璧に取り組んでいるが、私は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'); 

をしかし、私はまったくメッセージは表示されません。

私は何が間違っているのか全く分かりません。すべての助けに感謝します!

+0

チェック。 –

+1

クライアントのどのコードがサーバーのメッセージを処理するのですか? – supertopi

+0

私はクライアント側でJava実装を使用しています。クライアントが接続されているのは、クライアントまたはサーバー側のどちらでも「接続終了」メッセージが表示されないためです。それはちょうどそのようだsocket.send(message); echomessageイベントが発生したときには動作しません。 – EsTeGe

答えて

1

私はあなたのエラーはここにどこかにあると考えている:それは内部にあるので

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

は、socket.idを変更しないでください、あなたはソケットを使用して内部のプロセスを台無しにするかもしれません。

それはsocket.io自体によって定義されています。彼のクライアントは、彼はちょうどMSGを捨てることができ、ウェブソケットに接続されている場合source

+0

素晴らしい!それは確かに問題でした。 – EsTeGe

関連する問題