【问题标题】:Difference in server port and websocket port in node.js chat applicationnode.js聊天应用中服务器端口和websocket端口的区别
【发布时间】:2017-10-13 19:36:06
【问题描述】:

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

感谢和问候..

【问题讨论】:

    标签: node.js express socket.io chat


    【解决方案1】:

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

    1. 客户端向 Web 服务器发出 HTTP 请求,其中包含指定要“升级”到 webSocket 协议的标头并发送与安全相关的标头。
    2. Web 服务器看到升级请求,如果它启用了对 webSocket 连接的支持,它将以 101 请求(切换协议)和另一个与安全相关的标头进行响应。

    3. 客户端得到接受的升级,两端切换到 webSocket 协议,原来使用 HTTP 协议的 TCP 套接字现在使用 webSocket 协议。

    这样,普通的HTTP请求或webSocket连接请求都可以使用同一个端口和webServer。

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

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

    【讨论】:

    • @RobinSharma - 为什么删除已接受的答案?你的问题没有回答吗?如果是这样,您还对什么感到困惑?
    【解决方案2】:

    服务器套接字被服务器使用......它不断地在循环中监听即将到来的套接字请求......并且websocket向服务器套接字发送请求并绑定两个设备之间的连接......

    【讨论】:

      【解决方案3】:

      如果您有/想要有网络客户端,WebSocket 将是必需的,因为无法从基于浏览器的 JavaScript 访问“常规”TCP(或 UDP)套接字(我假设您不希望Flash、SilverLight 或 Java 小程序,2017 年)。 WebSocket 不是因为端口号而特别,而是因为协议而特别:WebSocket 连接以常规 HTTP 连接开始,然后protocol upgrade 重新配置它,它是为浏览器世界设计的,甚至能够遍历 HTTP 代理。建立连接后,提供全双工双向消息流,非常适合聊天应用。

      而且由于是网络事物,如果允许的话,您可以简单地使用端口 80。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2017-03-03
        • 1970-01-01
        • 2012-03-24
        • 2020-12-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多