我想了解更多關於websocket及其內部實現。但仍然不能理解一些事情。我試着用Google進行深入的解釋,但其中大多數只是給出了高層次的概述。以下是我的疑惑Websocket連接設置
根據我讀,web套接字服務器(C#/ C++實現)的默認端口80。雖然我們可以使用任何端口中,優選的,我們使用端口80,因爲我們贏了沒有任何防火牆問題。如果是這樣,我們應該如何在同一個端口(80)上運行Web服務器和Web套接字服務器?
2.讓我們假設web套接字服務器在端口81上運行Web服務器,並在端口上運行80
因此,當瀏覽器發出的初始握手的HTTP請求(升級:的WebSocket) ,這個請求發送到81端口。對嗎?如果是這樣,這個請求(見下文)與HTTP協議沒有任何關係。但我們仍然使用HTTP協議標頭。爲什麼?
GET /mychat HTTP/1.1 Host: server.example.com Upgrade: websocket Connection: Upgrade Sec-WebSocket-Key: x3JJHMbDL1EzLkh9GBhXDw== Sec-WebSocket-Protocol: chat Sec-WebSocket-Version: 13 Origin: http://example.com
爲什麼力,他們使用目前大多數瀏覽器發出直接的TCP /與給定的端口IP連接實現了相同的WebSocket的接口,無需任何HTTP的東西?
3.是否有任何數據包的大小限制或數據/緩衝器限制發送數據/從客戶端/服務器接收到?如果是這種情況,我們是否需要構建數據並自行處理?
4. websocket服務器是否總是需要單獨的服務/進程?將來,Web服務器(IIS,apache)將包括對在其進程空間內託管Web套接字服務器的支持嗎?
真的很好的問題! – GameScripting 2012-08-01 17:48:54
我記得在某個地方看到下一版本的Windows Server將支持IIS下的網絡套接字。由於http.sys的實現,Windows 2008無法支持WebSockets。如果我找到參考,我會放在回答 – JoshBerke 2012-08-01 17:50:51