首页 > 解决方案 > React Native websocket event.data接收二进制数据时为空数组

问题描述

我正在尝试在 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 是如何处理这个问题的?

标签: javascriptreact-nativewebsocket

解决方案


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

上面的代码适用于 React 或常规 javascript 网页,但在 react native 中我必须添加这一行以将 binaryType 指定为“blob”

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

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


推荐阅读