nodejs socket.ioサーバーをトリガーして、ポート80を介してブロードキャストします
質問
リアルタイムの更新メカニズム:ユーザーの書き込み - > php in mysql dbに保存 - > php nodejsに情報を送信 - > nodejsすべてのサブスクライバー - >他の人がリアルタイムで気付くことができます。
Socket.ioサーバーはうまく機能し、ポート8080で実行されます。ポート80でノードHTTPサーバーを実行しています。HTTPサーバーでトリガーメッセージを取得し、すべてのsocket.ioクライアントにメッセージを送信するにはどうすればよいですか?
var io = require('socket.io').listen(8080);
var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Message Broadcast\n');
console.log("Message Sent");
//DOES NOT SEEM TO WORK, error
io.broadcast("Messages");
//No error but no messages
io.emit("Message");
}).listen(80, "0.0.0.0");
/**
Other socket.io code which works well..
....
解決
socket.io 0.7では、代わりに次のものを使用して、特定のソケット参照なしで接続されたすべてのソケットに送信する必要があります。
io.sockets.send("Messages")
これは異なることに注意してください broadcast
それはすべてのソケットに送られるので を除外する 接続を開始したソケット - もちろん、送信ソケット参照が必要なため、現在のコードでは十分ではありません。
Wikiページからの引用: socket.io/wiki
あなたがすべての人にメッセージを送りたいなら、あなたは参照することができます
io.sockets
:
io.sockets.send('message');
io.sockets.emit('event');
所属していません StackOverflow