0

ちょっとキャンバスでゲームを作るためにウェブソケットがどのように機能するかを学ぶために、小さなチャットクライアントを構築しようとしています。ソケットの送信ではうまく機能しますが、それを書いた人にのみ送信しています。

何か小さなことを見逃していると思いますが、なぜうまくいかないのか理解できません。

サーバー側コード

var app = require('express')()
  , server = require('http').createServer(app)
  , io = require('socket.io').listen(server);

server.listen(3000);

app.get('/', function (req, res) {
  res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection', function (socket) {
  socket.on('user-message', function (data) {
    console.log(data);
    sendMessage(data.message);
  });
});

var sendMessage = function(message) {
      io.sockets.emit('server-message', {message: message});
}

クライアント側のコード

        <script src="/socket.io/socket.io.js"></script>
        <script>
            var socket = io.connect('http://localhost');

            socket.on('server-message', function (data) {
                var history = $('#chatbox').val();

                $('#chatbox').val(history + "\n" + data.message)
            });


            $("#write").keyup(function(event){
                if(event.keyCode == 13){
                    socket.emit('user-message', {message: $(this).val()});
                    $(this).val('');
                }
            });
        </script>
4

1 に答える 1

1

を使用socket.broadcast.emitして、他のすべてのソケットにメッセージを送信できます。

io.sockets.on('connection', function (socket) {
    socket.on('user-message', function (data) {
        console.log(data);
        sendMessage.call(socket, data.message);
    });
});
var sendMessage = function(message) {
      this.emit('server-message', {message: message});
      this.broadcast.emit('server-message', {message: message});
}
于 2013-01-13T21:10:15.800 に答える