React Native websocket event.data接收二进制数据时为空数组

Posted

技术标签:

【中文标题】React Native websocket event.data接收二进制数据时为空数组【英文标题】:React Native websocket event.data is empty array when receiving binary data 【发布时间】:2020-03-30 21:31:52 【问题描述】:

我正在尝试在 React Native 应用程序中使用 websocket 连接来接收二进制数据,我的 websocket 代码如下所示:

var websocket = new WebSocket("ws://10.10.10.1/stream")

websocket.onmessage = (event) => 
        console.log(event);
        console.log(event.data);

        var reader = new FileReader();
        reader.readAsText(event.data, "UTF-8");

        reader.onload = function() 
         ...
        
; 

记录的事件对象如下所示:

data: [], istrusted: false

event.data 记录为未定义

我可以正常连接并发送消息,但无法接收消息。 我有相同的 websocket 连接在 web 应用程序中工作正常,所以我知道 websocket 服务器正在发送正确的数据,但由于某种原因,我在使用 React Native 时无法获取传入的消息数据。

React Native 是如何处理这个问题的?

【问题讨论】:

【参考方案1】:

在这里发帖是因为我找到了解决问题的方法。

上面的代码在 React 或常规 javascript 网页中工作,但在 react native 中我必须添加这一行来将 binaryType 指定为 'blob'

var websocket = new WebSocket("ws://10.10.10.1/stream");
websocket.binaryType = 'blob';

希望这可以帮助以后遇到同样问题的其他人

【讨论】:

以上是关于React Native websocket event.data接收二进制数据时为空数组的主要内容,如果未能解决你的问题,请参考以下文章

React-native websocket TLS连接

react-native WebSocket & nodejs WebSocket

React Native iOS 调试物理设备 WebSocket 连接失败

React Native 和 Websockets (sockets.io) 的 XMLHttpRequest 错误

在 ../node_modules/react-native-stomp-websocket 中找不到 RNStompWS 的 podspec

在 ES Lint 中将 WebSocket 定义为 React Native 应用程序的全局