WebSocket托管在非80端口,防火墙问题

3

如果一个websocket服务器没有托管在80端口,那么它将对Internet浏览器不可见?

我不能使用80端口(被IIS使用),也不能使用443和8080。

在自定义端口上托管的websockets是否会有防火墙问题?

唯一的方法是使用IIS8来共享同一端口(80)吗? (我正在使用带有SuperWebSocket库的IIS7)

从浏览器访问的Websockets不应该部署在自定义端口上?

提前感谢。

3个回答

1
根据这里的说法:
警告:服务器可以监听任何端口,但如果选择的端口不是80或443,则可能会遇到防火墙和/或代理的问题。在端口443上的连接往往更容易成功,但当然,这需要安全连接(TLS / SSL)。此外,请注意,大多数浏览器(特别是Firefox 8+)不允许从安全页面连接到不安全的WebSocket服务器。

1
为了回答你的问题,我发现我的Web服务器和Web Socket服务器都可以在端口80上,但是不同的主机(源)上实现最成功。只要Web Socket服务器可以处理来自Web页面源的CORS请求,似乎这是一种避免防火墙问题并朝向从Web服务器获取静态内容和从WebSocket服务器获取动态内容的架构的方法。
所以故事是:
- 从web.server.com:80(即源)提供页面 - 在该网页的应用程序空间中打开到websocket.server.com:80/serviceName的WebSocket - (进行跨源请求,需要websocket.server.com允许,可能会将web.server.com列入白名单) - 愉快地分别提供动态内容和静态内容。
以下是对你的一些问题的更具体的回答:
WebSocket服务器如果不托管在端口80上,是否会在Internet浏览器中看不见?

不行。如果需要,浏览器中的应用程序可以打开WebSocket到其他端口,但要遵守CORS限制。通常最好将WebSockets保留在80端口上,这样中间件和边缘网关就不必更改防火墙规则。

我不能使用80端口(它正在被IIS使用),也不能使用443或8080端口。托管在自定义端口上的WebSockets是否会有防火墙问题?

很可能会有问题,除非您控制防火墙并能够打开其他端口。


1

如果您可以控制防火墙,那么在自定义端口上运行websocket服务器就没有问题。您只需要打开该端口以允许传入流量即可。

问题并不是防火墙本身,而是其他类型的过滤、代理、负载均衡等,在流量到达您的服务器之前发生的问题。但是,除非您有未提及的特定要求,否则简单地允许该端口上的流量应该没有问题。

如果您的WebSocket服务器配置为限制连接到特定来源(CORS),则需要允许该来源进行连接。源是将提供发出WebSocket请求的Web页面的Web服务器的地址。默认情况下通常是完全开放或仅限于WebSocket服务器本身的地址。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接