我对 html5 的 websockets 规范感到非常兴奋,但我有一个担忧。
如今,每个人都在某个网络上运行,路由器(有线/无线)内置了防火墙,Windows 也内置了防火墙。
考虑到这一点,当服务器尝试连接回启动 websocket 握手的浏览器时,绝大多数用户会失败吗?(大多数人不知道如何在他们的路由器上设置端口转发)
还是我的想法不正确,它会顺利进行?
我对 html5 的 websockets 规范感到非常兴奋,但我有一个担忧。
如今,每个人都在某个网络上运行,路由器(有线/无线)内置了防火墙,Windows 也内置了防火墙。
考虑到这一点,当服务器尝试连接回启动 websocket 握手的浏览器时,绝大多数用户会失败吗?(大多数人不知道如何在他们的路由器上设置端口转发)
还是我的想法不正确,它会顺利进行?
我不是专家(所以请检查确认),但我相信会有一个 UPGRADE 机制,可以建立常规 HTTP 连接,然后升级到 WebSocket,因此除非它们正在执行激进的应用程序级别,否则不会干扰现有的防火墙规则数据包检查。连接仍然由浏览器发起。
HTML 5 WebSockets 不需要端口转发。继续从客户端建立连接,但是一旦建立连接,客户端和服务器的不对称就会消失。WebSockets 还通过使用 HTTPS 目前使用的相同 CONNECT 机制来穿透代理。
由于防火墙通常只是强制执行入站流量拒绝和出站流量路由(通常通过代理服务器)的规则,因此通常没有特定的 WebSocket 流量相关的防火墙问题。
代理服务器(在某种程度上,某些负载平衡路由器也是如此)是另一回事(请参阅为什么当前的 websocket 客户端实现不支持代理?)