0

我们刚刚在我们的 webapp 中添加了一个 websocket,它可以通过端口 9090 上的通用互联网(即不在防火墙后面)访问。一个客户端遇到了问题,因为他们的防火墙阻止了对该端口的访问。

是否有一个聪明的解决方案,不需要客户端进行额外的配置?我读过防火墙通常允许使用端口 443,并且是 Skype 的配置选项。这是一个选择吗?

我想到的一种解决方案,但我不知道它是否会起作用,是配置 web 服务器以将端口 80 上的某些请求代理到 websocket。但是,我不知道 websocket 是否可以共享端口 80,因为它也将服务正常的网页和 ajax 请求。

我们使用 socket.io 来实现 websocket 通信,并且在 node.js 前面有一个 webserver。

有什么建议么?

4

1 回答 1

3

防火墙只是可能干扰 WebSocket 连接的一种中介。另一个主要类别是网络代理。

为了最大限度地提高 WebSocket 连接成功的机会,您需要在端口 443 上运行 WSS(安全 WebSocket),其中 WS 服务器具有由 CA 颁发的证书,该证书内置于所有主要浏览器中。

这将在许多受限的公司网络中工作,除非有 MITM 代理来检查(未加密的)流量。

原则上,WS 可以与一个普通的旧 HTTP 服务器共享一个给定的端口——但是这个主题与上面是正交的。

于 2012-06-01T13:19:25.533 回答