1

ゲームの結果データをバイナリとして送信したいのですが、一部は効率化のためです (アイテムごとに 13 ではなく 6 バイトを送信します...これは、送信するデータの総量を半分以上にします。これらのアイテムが数百ある可能性があるため、結果大幅な節約になります)、および一部は難読化のためです (ネットワーク アクティビティを監視しているユーザーは、識別可能なデータではなく一見ランダムなバイトを表示します)。

私の「コード」(まだ使用されていない、単なるプロトタイプ)は次のとおりです。

String.fromCharCode.apply(null,somevar.toString(16).split(/(?=(?:..)+$)/).map(function(a) {return parseInt(a,16);}))

これにより、任意の整数値がバイナリ文字列値に変換されます。

ただし、AJAX とバイナリ データは混在しないことを思い出したようです。安全に使用できる値の範囲を知りたいです。32 から 255 の範囲に固執する必要がありますか、それともより安全に 32 から 127 に固執する必要がありますか? 32 ~ 255 の場合、上記のコードで 15 を基数として使用し、すべての数値に 32 を追加すると、dw が機能します。

しかし、実際には文字範囲の質問にもっと興味があります.クロスブラウザ(Canvasをサポートするブラウザの中で)バイナリデータを転送する方法があれば?

4

1 に答える 1

0

AJAX とバイナリ データは競合しません。何が起こるかというと、AJAX 呼び出しを行うと、データがフォーム データとしてポストされます。フォーム データを投稿するときは、通常、フォーム データを application/x-www-form-url-encode としてエンコードします。エンコードされたデータには、文字/数字と特定の特殊文字のみが含まれます。たとえば、スペースは %20 としてエンコードされます。このため、「通常の」文字をバイナリに変換しても、最終的にすべてを再度エンコードする必要があるため、スペースをまったく節約できない場合があります。

于 2013-07-09T23:48:40.463 に答える