2015-11-08 53 views
1

不Nagle算法需要禁用客戶端呢?如果是這種情況,我還沒有找到一種方法來通過JavaScript單獨禁用Nagle的算法。禁用Nagle算法的客戶端/ JavaScript的

我試圖跨越的WebSocket流數據,從託管在Raspbian OS PHP的CLI服務器(也託管在Windows 7和Ubuntu有相同的結果)。此服務器已成功創建套接字並接受多個連接,並設置了TCP_NODELAY標誌(僅用socket_get_option進行驗證)。

$sock = socket_create(AF_INET, SOCK_STREAM, SOL_TCP) 
socket_set_option($sock, SOL_SOCKET, TCP_NODELAY, 1); 

在大多數平臺上,無論設置了這個TCP_NODELAY標誌,數據都會流式傳輸而不會聚集。然而,在Windows 7的Chrome和Firefox的數據塊到達(有告密者0.2秒的延遲)。在Windows 8中,Linux中,iOS和Windows 7的IE 11:我沒有看到這個問題在所有。

http://www.13willows.com/hovelme/script/serverControl.php 下面是測試網站,點擊「連接」,然後單擊「查看遊戲」,你應該看到當前分組穩步遞增,從1到20,每50ms。但是,在某些客戶端,每200毫秒一次跳轉4次。

任何想法得到這個停下來?將使用node.js/socket.io修復這樣的問題,並仍然允許我從用戶的瀏覽器運行代碼?

回答

0

它需要啓用的兩個客戶端/禁用,我不知道的方式做到這一點通過JavaScript,但是,爲客戶端。我相信Chrome會默認禁用網絡套接字,但不確定其他瀏覽器。