默认情况下可与大多数防火墙一起使用的 Websocket 配置
Posted
技术标签:
【中文标题】默认情况下可与大多数防火墙一起使用的 Websocket 配置【英文标题】:Websocket configuration that will work with most firewalls by default 【发布时间】:2012-06-01 09:33:44 【问题描述】:我们刚刚向我们的 web 应用程序添加了一个 websocket,它可以通过端口 9090 上的通用互联网(即不在防火墙后面)访问。一个客户端遇到了问题,因为他们的防火墙阻止了对该端口的访问。
是否有一个聪明的解决方案,不需要客户端进行额外的配置?我读过防火墙通常允许使用端口 443,并且是 Skype 的配置选项。这是一个选择吗?
我想到的一个解决方案,但我不知道它是否会起作用,是配置 web 服务器以将端口 80 上的某些请求代理到 websocket。但是,我不知道 websocket 是否可以共享端口 80,因为它也将服务正常的网页和 ajax 请求。
我们使用socket.io来实现websocket通信,并且在node.js前面有一个webserver。
有什么建议吗?
【问题讨论】:
【参考方案1】:防火墙只是可能干扰 WebSocket 连接的一种中介。另一个主要类别是网络代理。
为了最大限度地提高 WebSocket 连接成功的机会,您需要在端口 443 上运行 WSS(安全 WebSocket),WS 服务器具有由 CA 颁发的证书,该证书内置于所有主要浏览器中。
这将适用于许多受限的公司网络,除非有 MITM 代理来检查(未加密的)流量。
原则上,WS 可以与一个普通的旧 HTTP 服务器共享一个给定的端口 - 但是这个主题与上面是正交的。
【讨论】:
非常感谢 - 很好的回复。以上是关于默认情况下可与大多数防火墙一起使用的 Websocket 配置的主要内容,如果未能解决你的问题,请参考以下文章
在默认情况下可枚举设置为 false 的 JS 中创建对象属性的其他方法是啥?
透明 ViewController 可与 presentViewController 一起使用,但不能与 pushViewController 一起使用