我读过WebSockets,我想知道为什么浏览器不能像任何其他桌面应用程序一样简单地打开简单的 TCP 连接并与服务器通信。为什么可以通过 websockets 进行这种通信?
当您在 Intranet 边界内工作时,通过 TCP 套接字进行通信会更容易,因为您可能可以控制该网络上的机器并且可以打开适合进行 TCP 连接的端口。
通过互联网,您正在与另一端的其他服务器进行通信。他们 极 不可能打开任何旧套接字以进行连接。通常它们只有少数标准端口,例如用于 HTTP 的端口 80 或用于 HTTPS 的 443。因此,要与服务器通信,您必须使用这些端口之一进行连接。
鉴于这些是通常使用 HTTP 的 Web 服务器的标准端口,因此您必须遵守 HTTP 协议,否则服务器不会与您通信。Web 套接字的目的是允许您通过 HTTP 发起连接,然后协商使用 Web 套接字协议(假设服务器能够这样做)以允许更像“TCP 套接字”的通信流。