根据您关于服务器不需要实时数据的评论,您绝对不应该每 20 毫秒向服务器发送一次数据。将其保存在客户端并以块的形式发送,例如每 30 或 60 秒一次。这可以在数组的内存中完成。保存鼠标坐标不是很密集。
一旦你准备好发送它,我认为你会发现XMLHttpRequest
速度足够快,足以满足你的需要。
这个演示展示了如何捕捉到坐标并显示 50fps 是可行的(我在 OS X 上的 Chrome 中达到了 60fps)。
演示:http: //jsfiddle.net/ThinkingStiff/2Ls3A/
var coordinates = [],
count = 0,
SECONDS = 1000,
INTERVAL = 5;
window.onmousemove = function ( event ) {
//move cursor over page for at least 10 secs for an accurate reading
coordinates.push( [event.pageX, event.pageY] );
};
window.setInterval( function () {
console.log( ( coordinates.length - count ) / INTERVAL + 'fps' );
count = coordinates.length;
}, INTERVAL * SECONDS );
如果您真的认为在发送数据方面需要更高的效率,那么通过 Internet 连接客户端和服务器计算机的最低延迟方法是持久 TCP 套接字。这在 HTML 中通过WebSocket API
.
ws:
例如,几乎每种服务器端语言都有一些库使用URL 模式(wss:
为了安全)来处理端点socket.io
。
客户:
var socket = new WebSocket('ws://example.com/endpoint' );
socket.onopen = function () {
socket.send( 'send some text' );
};