我们刚刚在我们的webapp上添加了一个websocket,它可以通过端口9090上的一般互联网(即不在防火墙后面)访问。一个客户端遇到问题,因为他们的防火墙阻止了对该端口的访问。
是否有一个聪明的解决方案,不需要客户端的额外配置?我已经读过防火墙经常允许端口443,并且是Skype的配置选项。这是一个选择吗?
我遇到的一个解决方案,但我不知道它是否可行,是配置Web服务器将端口80上的某些请求代理到websocket。但是,我不知道websocket是否可以共享端口80,因为它也将是服务正常的网页和ajax请求。
我们使用socket.io来实现websocket通信,并在node.js前面有一个web服务器。
有什么建议吗?
答案 0 :(得分:3)
防火墙只是一种可能干扰WebSocket连接的中介。另一个主要类别是网络代理。
为了最大限度地提高WebSocket连接成功率,您需要在端口443上运行WSS(安全WebSocket),其中WS服务器具有由所有主要浏览器内置的CA颁发的证书。
这将适用于许多受限制的公司网络,除非有MITM代理检查(未加密的)流量。
原则上,WS可以与普通的旧HTTP服务器共享给定端口 - 但是这个主题与上面的主题正交。