Socket.io 监听多个端口?

piz*_*zae 5 node.js socket.io

我进行了一些搜索,但找不到有关此主题的任何更新答案,因为找到的答案仅适用于旧版本的 Socket.io。

这是我的代码:

let http = require('http').Server(app);
let io = require('socket.io')(http);

http.listen(7000, '::1', function () {
    // Now listening
});

io.on('connect', function (socket) {

}
Run Code Online (Sandbox Code Playgroud)

我可以添加额外的代码吗?例如:

http.listen(8000, '::1', function () {
    // Now listening
});

io2.on('connect', function (socket) {

}
Run Code Online (Sandbox Code Playgroud)

我希望这个单一的 node.js 实例同时监听两个不同的端口。这样我就可以适当地处理两种不同类型的客户端,方法是让它们连接到适当的套接字,然后以不同的方式处理这两个组。

一个人会怎样做呢?

ard*_*lez 2

我很确定一个 HTTP 实例无法侦听多个端口。你应该尝试这样的事情:

let http = require('http').Server(app);
let io = require('socket.io')(http);

io.on('connect', function (socket) {

});

http.listen(7000, '::1', function () {
    // Now listening
});

let http2 = require('http').Server(app);
let io2 = require('socket.io')(http2);

http2.listen(7001, '::1', function () {
    // Now listening
});

io2.on('connect', function(socket){

});
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我认为您可以通过使多个不同类型的客户端加入不同的命名空间来使用单个套接字处理它们。来自socket.io文档:

https://socket.io/docs/#restricting-yourself-to-a-namespace

https://socket.io/docs/rooms-and-namespaces/#