使用Node.js(通过socket.io)共享一个端口的多个套接字

6

我不确定如何在服务器端同时为多个套接字使用单个端口,我应该如何在node.js中实现。我目前正在使用socket.io,并且每个端口只有一个套接字。如果不存在解决方案,但仍然可能,请提供您的建议以实现相同的效果。另外,如果我们共享一个端口,可能会出现什么问题?在考虑到客户端可能处于空闲状态但仍需要维护每个客户端的套接字连接的情况下,还有哪些相关选项可以考虑?

1个回答

5
假设您的服务器运行在80端口,下面是其背后发生的事情:
  1. 服务器监听80端口。
  2. 客户端1从其端口12345连接到服务器端口80。
  3. 服务器接受客户端1的连接请求,并分配了端口9876以与客户端1通信。
  4. 服务器继续监听80端口。
因此,尽管您可能认为端口80已被占用,实际上它只是一个监听器。您的计算机可能有50000个空闲端口,因此没有问题。
请注意:端口不能在其他进程之间共享。只有 Node 的子进程可以共享,请查看以下链接了解如何实现:http://nodejs.org/docs/latest/api/cluster.html

#3 是不正确的。服务器(至少在HTTP协议下)不会分配额外的端口与客户端通信。TCP允许多个连接到单个端口(80),只要每个连接的另一端具有唯一的IP和端口(例如client1:12345)组合即可。 - josh3736

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接