2012-08-02 109 views
3

未託管在端口80中的websocket服務器將從Internet瀏覽器中不可見?WebSocket未託管在端口80防火牆問題

我不能用端口80(它正由IIS)既不是443,也不8080

是否託管在自定義端口的WebSockets將有防火牆問題?

唯一的方法是使用IIS8共享相同的端口(80)? (我正在使用帶有SuperWebSocket庫的IIS7)

從瀏覽器訪問的Websockets不應該部署在自定義端口中?

在此先感謝。

回答

1

爲了解決您的問題,我發現我的Web服務器和Web套接字服務器都可以在端口80上,但是不同的主機(源)上獲得了最大的成功。只要Web Socket服務器能夠處理來自Web頁面起源的CORS請求,看起來這是一種避免防火牆問題的方式,並且導致Web服務器具有靜態內容和WebSocket服務器具有動態的架構。

這樣的故事是:

  • 從web.server.com:80服務頁面(這是原點)在網頁上應用空間

  • 打開的WebSocket向websocket.server .COM:80 /服務名

    (使得需要被websocket.server.com被允許的橫原點請求,這可能會列入白名單web.server.com)

  • 高興地分別服務於動態內容和靜態內容。

一些更具體的回答大家的一些問題:

未在80端口承載的WebSocket的服務器,將是不可見的互聯網瀏覽器?

號你在瀏覽器應用程序可以打開的WebSocket到其他端口,如果這是可取的, 受到CORS約束。通常將WebSocket保留在端口80上是有利的,因此中介和邊緣網關不必更改防火牆規則。

我不能用端口80(它正由IIS)既不是443,也不8080 是否託管在自定義端口的WebSockets將有防火牆問題?

很可能,除非您控制防火牆並可以打開其他端口。

1

如果你能控制防火牆,那麼在自定義端口上運行websocket服務器沒有問題。您只需要打開端口以允許傳入該端口的流量。

問題不是真正的防火牆本身,而是流量到達服務器之前發生的其他類型的過濾,代理,負載平衡等。但是,除非您有具體的要求,您沒有提到,那麼只需在該端口上允許通信就沒有問題。

如果您將WebSocket服務器配置爲限制連接到特定的來源(CORS),那麼您將需要允許來源進行連接。起源是將提供WebSocket請求的Web頁面的Web服務器的地址。默認值通常是開放的或者限制在websocket服務器本身的地址上。

1

根據here

警告:服務器可以聽它選擇的任何端口上,但如果它 選擇80或443以外的任何端口,它可能與 防火牆和/或代理問題。端口443上的連接通常會成功更多 ,但當然,這需要安全連接(TLS/SSL)。 此外,請注意,大多數瀏覽器(特別是Firefox 8+)不允許 從安全頁面連接到不安全的WebSocket服務器。

相關問題