React Native 中与 @stomp/stompjs 的 Web 套接字连接

问题描述 投票:0回答:2

我对React Native还是个新手,目前正在开发一个项目,需要在React Native应用程序中实现Websocket连接并订阅主题以从Websocket接收消息。当我尝试使用 @stomp/stompjs 实现它时,我无法连接到 websocket,onConnect 函数不起作用。

下面是我的代码

import { Client, Message } from '@stomp/stompjs';
const stompConfig = {
    connectHeaders: {},
    brokerURL: "ws://203xxxxxxxx/xxx/connectSocket",
    debug: function (str) {
        console.log('STOMP: ' + str);
    },
    reconnectDelay: 200,
    onConnect: function (frame) {
        console.log("connected")
        const subscription = stompClient.subscribe("/topic/public/" + userId, function (message) {
            console.log(JSON.parse(message.body));

        });
    },
    onStompError: (frame) => {
        console.log('Additional details: ' + frame.body);
    },
}
stompClient = new Client(stompConfig);
useEffect(() => {
    stompClient.activate();
}, [])

这是我得到的输出日志

LOG  STOMP: Opening Web Socket...
LOG  STOMP: Web Socket Opened...
LOG  STOMP: >>> CONNECT
accept-version:1.0,1.1,1.2
heart-beat:10000,10000

如有任何帮助,我们将不胜感激:)

react-native websocket stompjs
2个回答
0
投票

伙计们,在做了一些研究后,我发现了解决方案,显然在 @stomp/stompjs 中存在某种类型的 bug,用于 React Native,您可以在 here 查看该问题 我通过将这行代码添加到我的 stompConfig

解决了我的问题
stompConfig:{
...,
forceBinaryWSFrames: true,
appendMissingNULLonIncoming: true,
}

0
投票

将其放在index.js或App.jsx中

import {TextEncoder} from 'text-encoding';

global.TextEncoder = TextEncoder;
© www.soinside.com 2019 - 2024. All rights reserved.