Javascript ゲームで型付き配列を使用して、クライアント (ブラウザーで実行中) とサーバー (node.js を実行中) の間でデータを送信しています。問題なくメッセージを送受信できますが、メッセージを送信するたびに新しい配列を作成するのではなく、型指定された配列を再利用することに関心があります。
これが私のsendMessageコードです:
function sendMessage(socket, data) {
// data is JSON
var encoded = BISON.encode(data);
if (socket.isBinary) {
var len = encoded.length,
bytes = new Uint32Array(len);
for (var i = 0; i < len; ++i) {
bytes[i] = encoded.charCodeAt(i);
}
}
if (server && socket.isBinary) {
socket.send(bytes, { binary: true, mask: false });
} else {
socket.send(encoded);
}
}
ここに私のreadMessageコードがあります:
function readMessage(data) {
if (data instanceof ArrayBuffer) {
var bytes = new Uint32Array(data);
data = String.fromCharCode.apply(null, bytes);
}
var message = JSON.stringify(BISON.decode(data));
return JSON.parse(message);
}
メッセージを送信するたびに、新しい Uint32Array を作成し、送信するメッセージの長さに初期化します。毎回新しい配列を作成するのではなく、メッセージごとにこの配列を再利用したいと思います。
これに関する私の現在の考え方は、 my を決定maxMessageSize
し、この長さで配列を初期化することです。maxMessageSize
ソケットを介して送信できる最大の許容メッセージになります。
質問)
ほとんどのメッセージは、正確 maxMessageSize
なサイズではない可能性があります。このような場合、メッセージの長さに何らかの値 ( null
?) を埋め込む必要があります。ソケットの反対側の値を読み取るときに、このパディングがいつ開始されたかをどのように知ることができますか?
これをすべて書き出すと、別の質問が私に浮かびました。これは努力する価値があるのでしょうか?