web-dev-qa-db-ja.com

io.on( 'connection'、...)vs io.sockets.on( 'connection'、...)

私は socket.io および Mean スタックをWebアプリに使用しています。 3006ポートでソケットのサーバーを起動しました。

var http = require('http').createServer(app);
http.listen(3006);
var io = require('socket.io').listen(http);

これらは両方とも接続時に機能するようです。

io.on('connection', function (socket) {
    console.log('Socket succesfully connected with id: '+socket.id);
});

そして...

io.sockets.on('connection', function (socket) {
   console.log('Socket succesfully connected with id: '+socket.id);
});

io.onio.sockets.onの違いは何ですか?また、最初の接続でどちらを使用する必要がありますか?

socket.on npm pageio.onを使用しますが、なぜio.sockets.onで機能するのですか

31
Srinath

Socket.IOクライアントがデフォルトで接続するデフォルトの名前空間は/です。 io.socketsまたは単にiodocs )で識別されます。

この例はドキュメントからコピーしました:

// the following two will emit to all the sockets connected to `/`

io.sockets.emit('hi', 'everyone');

io.emit('hi', 'everyone');           // short form

「on」でも「emit」でも同じだと思います。「io.sockets」を使用することは「io」のみを使用することと同等で、単に短い形式です。

ソケットを「名前空間」するということは、異なるエンドポイントまたはパスを割り当てることを意味します(便利な場合があります)。

これに対する答えからSO question

「Socket.ioは、2つの別個のインスタンスであるかのようにすべての作業を行いますが、それでも情報を1つの接続に制限します。これは非常に賢明です。」

13
AJO_