2017-05-05 41 views
-1

公式サイトのsocket.ioに私のコード例があります。私の疑いは、emit関数はすべてのクライアントのためにイベントを出しますか?サンプルコード:ソケットioの発光機能はどのように機能しますか?

サーバー(app.js):

var app = require('express')(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 

server.listen(80); 

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

io.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
}); 

クライアント(index.htmlを):EMIT関数は、すべてのクライアントのためか、単にイベントを放出する

<script src="/socket.io/socket.io.js"></script> 
<script> 
    var socket = io.connect('http://localhost'); 
    socket.on('news', function (data) { 
    console.log(data); 
    socket.emit('my other event', { my: 'data' }); 
    }); 
</script> 
+1

接続ごとに行われます。サーバーへの各接続は、基本的にコールバックに渡されるソケットオブジェクトを作成します。 – raina77ow

+0

あなたはこの回答をすべての異なる回答について参照できます。 [チェックアウト](http://stackoverflow.com/questions/10058226/send-response-to-all-clients-except-sender-socket-io#answer-10099325 ) –

答えて

3

サーバーを接続しているクライアントのために?サーバー上のコード例で

socket.emit(...)は、その特定の接続にメッセージを送信します。

io.emit(...)は、現在接続されているすべてのクライアントにメッセージを送信します。

io.emit()は、任意の魔法の力を持っていない、それだけですべての現在接続しているクライアントをループし、個別にその特定のsocketオブジェクトを使用して、それぞれに対してsocket.emit()を呼び出すことを覚えておいてください - あなたにそのコードを自分で書くことの仕事を保存。

クライアントからは、socket.emit()がサーバーにメッセージを送信します。

+0

本当にありがとう、それは今私には明らかです! –

関連する問題