3

ライブラリを使用CocoaHTTPServerして、バイナリ データを Web ソケットに送信しようとしています。Web ソケットが正常に開き、iOS から問題なく文字列を受信できます。ただし、ソケットを介してバイナリ データを送信しようとするとCould not decode a text frame as UTF-8、Chrome でエラーが発生します。

Web ソケットを介して iOS からバイナリ データを正常に転送した人はいますか? (UIImage私の場合です)

CocoaHTTPServersendData:(NSData *)data私が使用している方法がありますが、成功していません。私が使用するsendMessage:(NSString *)と問題なく動作します(これは本質的にUTF-8エンコーディングNSStringを使用するように変換します)NSData

4

2 に答える 2

0

したがって、適切なエンコード/デコードで解決しました。

私が理解しているように、バイナリデータ転送をサポートしていません (ただし、一部のチュートリアルでは方法が示され、 を使用して設定できるバイナリ転送の有効なデータ型としてとWebSocketsについて説明されているため、サポートされると予想していました。まだ実験段階なのでしょうか?)ArrayBufferBlobconnection.binaryType='arraybuffer'

したがって、送信する前にデータをテキスト データに変換する必要があります。

iOSでは、

WebSocket *socket = ...; // From CocoaHTTPServer
NSData *image_data = ...;
NSString *str_64 = [Helper base64ForData:image_data];  // Can be found at http://cocoadev.com/BaseSixtyFour
[socket sendMessage:str_64];

JSで、

connection.onmessage = function(e)  {
  var msg = e.data;
  var img1 = document.getElementById('img1');
  img1.src = 'data:image/jpeg;base64,' + msg;
}

Chrome と Safari でテスト済み、魅力的に動作

于 2013-07-11T09:33:04.640 に答える