默认情况下可与大多数防火墙一起使用的 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 一起使用

干货|一文吃透Linux提权

如何声明可与 ESLint 一起使用的 mongoose 静态方法

可与仅派生方法一起使用的 C++ 继承函数指针