最近我一直在玩WebSockets,作爲我最新的遊戲項目。當我將鍵盤控制器連接到WebSocket客戶端時,我注意到消息的輕微延遲,甚至丟失了消息,WebSocket客戶端只是將按鍵/發佈發送到服務器。Firefox是否有WebSocket消息限制?
因此,如果我快速連續發送多條消息,Firefox似乎會在每條消息之間暫停一段時間,或者如果消息太多,甚至會丟棄它們。
相同的代碼在Chrome中運行正常,沒有延遲或消息丟失。這是故意的嗎?
編輯:這是一個簡單的頁面,其中發生在我的問題:
<!DOCTYPE html>
<html lang="en">
<head>
<title>WebSocket Test</title>
<meta charset="utf-8"/>
<script>
socket = new WebSocket("ws://example.com/websockettest");
socket.onopen = function() { message("[[ Connected ]]"); }
socket.onclose = function() { message("[[ Disconnected ]]"); }
socket.onmessage = function(e) { message(e.data); }
function message(msg) {
document.getElementById("messages").textContent += msg + "\n";
}
</script>
</head>
<body>
<input type="button" value="Send" onclick="socket.send('Hey!');"/>
<input type="button" value="Send two" onclick="socket.send('Hey once!');
socket.send('Hey twice.');"/>
<pre id="messages"></pre>
</body>
</html>
需要注意的是,如果我反覆衝「發送」按鈕,或者直接按不要緊「發送兩個」。
什麼版本的Firefox?什麼服務器?你使用什麼客戶端庫(如果有的話,如果不是發佈一些代碼)?您是否在Firefox中手動啓用websockets支持,或者您使用的是web-socket-js? – kanaka 2011-05-03 18:20:59
我使用啓用了WebSockets的Firefox 4.0.1,並且使用SuperWebSocket作爲服務器的基礎。大多數代碼位於服務器端,並通過套接字發送給客戶端。這是一個簡單的更新循環,每秒調用30次,並在此期間發送密鑰更改。我會看看我是否可以在一起簡單的測試頁面。 – copyboy 2011-05-03 18:31:58