React Native中的Websocket.send(blob)

Sun*_*Lee 6 javascript websocket react-native

我正在尝试使用React Native中的Websocket发送blob数据.

我的React本机和Web代码如下:

var websocket = new WebSocket(this.state.wsURI);
websocket.onopen = function(evt) { onOpen(evt) };
websocket.onclose = function(evt) { onClose(evt) };
websocket.onmessage = function(evt) { onMessage(evt) };
websocket.onerror = function(evt) { onError(evt) };

function onClose(evt){
  console.log('disconnected');
}

function onOpen(evt) {
  var message = {
    action: 'start',
    'content-type': 'audio/wav',
  };

  websocket.send(JSON.stringify(message));
  websocket.send(blob);
  websocket.send(JSON.stringify({action: 'stop'}));
}
Run Code Online (Sandbox Code Playgroud)

在Web应用程序中,blob数据被很好地发送.但是在React Native App中,会出现错误消息(Websocket.send的Unsupported dataType).

反应原生的blob的控制台日志是,

Blob {listeners: Object, isRNFetchBlobPolyfill: true, multipartBoundary: null, _ref: "/Users/somepath/...-4454330B7F04/Documents/audio.wav", _blobCreated: true…}
Run Code Online (Sandbox Code Playgroud)

有没有办法使用Websocket正确发送blob数据?

And*_*vic 2

遗憾的是 React Native 在 js 端不使用支持二进制数据。请参阅此问题https://github.com/facebook/react-native/issues/1424

您可以尝试将 blob 编码为 base64 字符串,虽然效率较低,但总比没有好。