【发布时间】:2011-05-03 18:02:26
【问题描述】:
我最近一直在玩 WebSockets,这是我最近的游戏项目。当我将键盘控制器连接到 WebSocket 客户端时,我注意到消息略有延迟,甚至消息丢失,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 中手动启用 websockets 支持还是使用 web-socket-js?
-
我使用的是 Firefox 4.0.1,启用了 WebSockets,SuperWebSocket 作为服务器的基础。大多数代码位于服务器端并通过套接字发送到客户端。这是一个简单的更新循环,每秒调用 30 次,并在此期间发送 keychanges。我看看能不能弄个简单的测试页。
标签: javascript firefox websocket