1

Node.jsとsocket.ioを使用すると、クライアントにブロードキャストしようとするまで、次のように正常に機能します。

未定義の放送がありますか?

var http = require('http'),
    sys  = require('sys'),
    fs   = require('fs'),
    io   = require('socket.io');

var server = http.createServer(function(request, response) {
  response.writeHead(200, {
    'Content-Type': 'text/html'
  });

  var rs = fs.createReadStream(__dirname + '/index.html');
  sys.pump(rs, response);

});

var socket = io.listen(server);
debugger;
socket.on('connection', function(client) {
  debugger;
  var username;

  client.send('Welcome to this socket.io chat server!');
  client.send('Please input your username: ');

  client.on('message', function(message) {
    if (!username) {
      username = message;
      client.emit('Welcome, ' + username + '!');
      return;
    }
    socket.broadcast.send('a message');
    //io.socket.send('a message');
    //io.socket.emit('message', username + ' sent: ' + message);
  });

});

server.listen(4000);
4

2 に答える 2

2

特定のクライアントから残りのクライアントにメッセージを送信する場合は、次を使用します。

client.broadcast.send('a message');

すべてのクライアントにメッセージを送信するには、次を使用します。

socket.sockets.send('a message');

syspump、それらはすべて非推奨です。

https://github.com/joyent/node/wiki/API-changes-before-v0.6-and-v0.8 http://nodejs.org/api/util.html#util_util_pump_readablestream_writablestream_callback

于 2012-09-20T03:02:47.183 に答える
1

これは、オブジェクト(誤解を招くような名前の など)ではなく、オブジェクト(あなたの場合)broadcastのメソッドであるためです。あなたがしたい。io.sockets.socketclientio.socketssocketclient.broadcast...

コードから見ると、非常に古いバージョンのノード (例: sys.pump()) を使用しているように見えます。また、古いバージョンの socket.io を使用している可能性もあります。

于 2012-09-20T02:26:42.037 に答える