今回の問題は、特定のモバイルブラウザでWebSocketのバイナリ送信が上手く行かないという問題です。
クライアント側のソースコードです。WebSocketでUint8Arrayを送信しています。
コネクション
lang
1var socket = new WebSocket('ws://localhost:8082'); 2socket.binaryType = 'arraybuffer';
送信
lang
1var byteArray = new Uint8Array([0, 1]); 2socket.send(byteArray);
サーバ側はErlangのcowboyというHTTP/WebSocketサーバを使用しています。通常のブラウザではサーバ側でバイナリとして正しくデータが受け取れます。しかし問題のブラウザでは、テキストで"[object Uint8Array]"が来ています。
function clauseで{websocket_protocol,websocket_handle,[{text,<<"[object Uint8Array]">>}というエラーが出ており、Uint8Arrayの中身でなく"[object Uint8Array]"というテキストが送られて来ています。
以下は問題のブラウザのUser-Agentです。Android携帯の標準ブラウザのようです。
Mozilla/5.0 (Linux; U; Android 4.2.2; ja-jp; SonySO-04E Build/10.x.xx.xxx) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Mobile Safari/xxx.xx"
この問題について、回避策等をご存知の方はいらっしゃいますでしょうか?
あなたの回答
tips
プレビュー