node.js聊天应用程序中服务器端口和websocket端口的区别

时间:2017-10-13 19:36:07

标签: node.js express socket.io chat

我正在尝试使用socket.io和express在node.js中创建一个多房间聊天应用程序。我在使用服务器端口和websocket端口时感到困惑。我理解客户端使用服务器端口连接到服务器。但不确定使用websocket端口。

谢谢&此致..

3 个答案:

答案 0 :(得分:3)

webSockets可以与您的Web服务器共享相同的端口,这是一种常见配置。这是有效的原因是因为webSocket如何建立连接(所有webSocket连接都是通过HTTP请求启动的)。它的工作原理如下:

  1. 客户端向Web服务器发出HTTP请求,其头部指定他们想要升级"到webSocket协议并发送与安全相关的标题。
  2. Web服务器看到升级请求,如果它支持webSocket连接,它将响应101请求(切换协议)和另一个与安全相关的标头。

  3. 客户端获得接受的升级,并且两端都切换到webSocket协议,并且使用HTTP协议启动的原始TCP套接字现在使用webSocket协议。

  4. 通过这种方式,相同的端口和webServer可用于常规HTTP请求或webSocket连接请求。

    对于聊天应用程序,通常使用webSocket连接,因为它是一个连续的连接,更容易让服务器直接向客户端发送信息,这在聊天应用程序中经常需要。

    要了解有关webSocket连接和服务器如何工作的更多信息,请参阅MDN上的此参考:Writing WebSocket servers,其中显示了启动webSocket连接的分步过程。

答案 1 :(得分:0)

服务器套接字由服务器使用...继续在循环中监听即将到来的套接字请求...而websocket向服务器套接字发送请求并绑定两个设备之间的连接......

答案 2 :(得分:0)

如果您有/想要拥有网络客户端,则需要WebSocket,因为无法访问'常规'基于浏览器的JavaScript的TCP(或UDP)套接字(我假设您在2017年不需要Flash,SilverLight或Java Applet)。由于端口号,WebSocket并不特殊,但由于协议的原因,它是特殊的:WebSocket连接作为常规HTTP连接启动,protocol upgrade之后重新配置它,它是专为浏览器世界设计的,甚至是能够遍历HTTP代理。建立连接后,它提供了一个全双工,双向消息流,非常适用于聊天应用程序。

由于是一个Web事物,如果你被允许,你可以简单地使用端口80。