javascript - 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 是如何处理这个问题的?
解决方案
在这里发帖是因为我找到了解决问题的方法。
上面的代码适用于 React 或常规 javascript 网页,但在 react native 中我必须添加这一行以将 binaryType 指定为“blob”
var websocket = new WebSocket("ws://10.10.10.1/stream");
websocket.binaryType = 'blob';
希望这可以帮助其他人稍后遇到同样的问题
推荐阅读
- mysql - pymysql | 将 NULL 插入 nulable int 字段
- javascript - 如何修复手风琴磁贴菜单的标签顺序?
- angular - 如何在维护引用者的同时从 Angular2 路由的 canActivate 在 Chrome 中重定向到外部 URL?
- ios - 滚动在 iPhone 上不起作用
- python - 如何获取给定python模块的属性、方法及其类的列表?
- laravel - laravel 404错误页面,重定向
- c - 如何使我的程序按大小或上次修改时间排序?- C
- hibernate - @JoinTable 在 JPA/Hibernate @OneToMany List(with @OrderColumn) 映射中遇到困难
- shell - UNIX Shell 计算两个时间戳之间的小时差
- clojure - Clojure 将 var 添加到命名空间