5

Socket.IO の RPC 機能を利用しながらバイナリ データを送信できるようにするために、同じサーバー上でSocket.IO とWSモジュールの両方を使用できると考えました。完全に別々のサーバーを開いて両方の接続を確立するのではなく、同じ HTTP サーバーを利用できないかと考えています。

http.createServer()Socket.IO と WS の両方で同時に作成したサーバーを 1 つだけ使用することはできますか? 明確にするために、クライアントから Socket.IO 接続と通常の WebSocket 接続の両方を作成することを想定しています。次のコードは、おそらく Socket.IO と WS の両方が接続を処理しようとしているため、クライアント側でプロトコル エラーを作成します。

var http = require('http');
var server = http.createServer(app);
server.listen(3000);

// Socket.IO
var io = require('socket.io').listen(server);
io.sockets.on('connection', function (socket) {
    // ...
}

// ws
var WebSocketServer = require('ws').Server
var wss = new WebSocketServer({server: server});
wss.on('connection', function (ws) {
    // ...
}
4

2 に答える 2

3

2016年の時点で、websocketモジュールにパスを割り当てることができました

var wss = new WebSocketServer({ server: server, path: '/ws' }); //do not interfere with socket.io

socket.io 側を変更する必要はまったくありません

于 2016-05-11T22:23:47.177 に答える