2012-02-17 5 views
2

私はNode.js(Express)とSocket.ioで基本的なチャットアプリケーションを作成しようとしています。すべてが '働いているようです'と思っていますが、私のソケットサーバーは元の送信者にメッセージを送り返しているようです。ここに私のソケットコードは次のとおりです。私のSocket.io Expressアプリが「送信者」のクライアントに送信するのはなぜですか?

var client = io.listen(app); 

client.sockets.on('connection', function (socket) { 
    socket.on('message', function (data) { 
    console.log(data); 
    socket.send(data); 
    }); 
}); 

そしてここでは、私のクライアント側のコードは次のとおりです。

$(document).ready(function() { 
    var socket = new io.connect('http://localhost:3000'); 

    socket.on('connect', function() { 
     socket.send('A client connected.'); 
    }); 

    socket.on('message', function(message) { 
     $('#messages').html('<p>' + message + '</p>' + $('#messages').html()); 
     console.log(socket); 

    }); 

    $('input').keydown(function(event) { 
     if(event.keyCode === 13) { 
      socket.send($('input').val()); 
      $('input').val(''); 
     } 
    }); 
}); 

ヘルプは高く評価されています。

答えて

2

socket.emitの代わりにclient.sockets.emitを使用してください。接続されたすべてのクライアント(ブロードキャスト)に送信され、ソケットオブジェクトは特定のクライアントにのみ送信されます。

+0

何らかの理由で、私がclient.sockets.send(data)を使用すると、あなたの助けを借りて期待どおりに動作します!しかし、client.sockets.emit(data)は何も放送していません。 – Inc1982

0

サーバー側は、私はあなたがしたいと思う:

socket.broadcast.emit(data); 

の代わりに:

socket.send(data); 

参照"How to use" pageの下部にある "メッセージのブロードキャスト"。 :)

関連する問題