最近我一直在玩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