サーバーはリアルタイムでデータを必要としないというコメントに基づいて、20msごとにデータをサーバーに送信しないでください。クライアントに保存し、チャンクで、たとえば 30 秒または 60 秒ごとに送信します。これは、配列のメモリ内で実行できます。マウス座標の保存はそれほど集中的ではありません。
XMLHttpRequest
送信する準備ができたら、ニーズに合った十分な速さを見つけることができると思います.
このデモでは、座標にキャプチャする方法を示し、50 fps が実行可能であることを示しています (OS X の Chrome で最大 60 fps を取得しています)。
デモ: 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 );
データの送信をより効率的に行う必要があると本気で考えている場合、インターネット経由でクライアントとサーバー コンピューターを接続するための待機時間の最も短い方法は、永続的な 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' );
};