React Native中的Websocket.send(blob)

时间:2017-06-26 09:05:51

标签: javascript react-native websocket

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

我的React本机和网络代码如下:

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'}));
}

在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…}

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

1 个答案:

答案 0 :(得分:0)

可悲的是,React Native在js端未使用支持二进制数据。请参见此问题https://github.com/facebook/react-native/issues/1424

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