【问题标题】:React Native 0.60.5 - receive binary data over WebSocketReact Native 0.60.5 - 通过 WebSocket 接收二进制数据
【发布时间】:2019-09-12 15:55:53
【问题描述】:

我打开一个从我的 RN 0.60.5 应用程序到我的 Node.js 的 WebSocket 连接 服务器并发送二进制数据就好了(应用程序发送,服务器接收。服务器使用ws)。但是当我从服务器发送二进制数据时,我的应用程序会收到一个空的 ArrayBuffer。我相信我的服务器代码是正确的,因为当我从浏览器连接时,我收到的二进制数据就好了。

据我所知,以前甚至无法通过 WebSocket 从 RN 应用程序发送二进制数据。我是否遗漏了什么或目前仅部分支持二进制传输?

谢谢。

【问题讨论】:

    标签: react-native websocket binary


    【解决方案1】:

    我遇到了完全相同的问题,发现我需要将 websocket 对象的 binaryType 设置为 'blob'

    var websocket = new WebSocket("ws://10.10.10.1/stream")
    websocket.binaryType = 'blob';
    
    websocket.onmessage = (event) => { ... } 
    

    在那之后,我能够将 event.data 传递到 FileReader 以使用数据,无论如何,对于我的用例。

    【讨论】:

    • 耶稣!他们终于做到了吗?那条线从来没有帮助过。你用的是哪个版本的 RN?
    • 显然!无论如何都为我工作,我目前在我的项目中使用 0.61.5
    • 我正在使用 react 16.13.1 和 react-native 0.63.3,我得到“错误:未实现 FileReader.readAsArrayBuffer”或“TypeError:reader.readAsBinaryString 不是函数”。您是如何从 blob 中获取数据的?
    • @RobinBobin 在我的情况下,接收到的数据是 JSON,所以我使用了 reader.readAsText(event.data, "UTF-8");然后解析为 JSON
    猜你喜欢
    • 1970-01-01
    • 2021-07-10
    • 1970-01-01
    • 2020-01-18
    • 2014-03-16
    • 1970-01-01
    • 1970-01-01
    • 2021-12-28
    • 1970-01-01
    相关资源
    最近更新 更多