Python サーバーから websocket 経由でバイナリ データを送信します。
data = struct.pack('!BI', 2, 1)
channel.send(channel.BINARY, data)
データ送信は問題なく動作します。クライアント側では、JavaScript は次のように取得します。
onbinarydata: function(data) {
alert(data.byteLength);
>> 5
var array = new Uint8Array(data,0,1);
alert(array[0]);
>> 2
var array2 = new Uint32Array(data,1,5);
>> Uncaught Error: INDEX_SIZE_ERR: DOM Exception 1
alert(array2[0]);
これはどのように起こりますか?バイト長からバイト オフセットを差し引いた値は 4 で、BYTY_ELEMENT_SIZE も 4 です。最初の値は問題なく読み込まれますが、次の値は型に関係なく常にエラーになります。このようにバイトオフセットを設定するだけでも
var array2 = new Uint32Array(data,1);
エラーがあります。