React Native 应用在 Android 上无法接收 WebSocket 消息

3
我正在使用Expo创建一个React Native应用程序,它连接到WebSocket服务器以显示来自消息的数据。我拥有的代码适用于Web和iOS,但由于某种原因,在Android上无法正常工作。看起来WebSocket已经连接,但没有接收到任何消息。
这是一个包含代码的Expo Snack https://snack.expo.dev/@waddas/cranky-soda
非常感谢您的帮助!

可能是 TLS 连接失败了。 - Tareq Saif
1
我在你的小食中用'wss://socketsbay.com/wss/v2/1/demo/'替换了websocket URL,在Android上它能够工作,因此问题必须是后端的websocket。 - Rohit S K
2个回答

0
请确保在 app.json 文件中设置了必要的权限。
"android": { "permissions": [ "INTERNET" ] }

0
请看一下这个答案https://dev59.com/jKf1oIgBc1ULPQZF0-YI#69235695,它可能与你的问题有关:
这是原因: https://github.com/facebook/flipper/issues/2495 在reactNativeFlipper.java中,以下代码行导致EventSource(SSE)无法工作。
解决方案1: - 进入android / app / src / debug / java / com / <projectname> / ReactNativeFlipper.java - 像这样注释NetworkFlipperPlugin:
client.addPlugin(CrashReporterPlugin.getInstance());

// todo commented because of this issue https://github.com/binaryminds/react-native-sse/issues/3 https://github.com/facebook/flipper/issues/2495
//       NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
//       NetworkingModule.setCustomClientBuilder(
//           new NetworkingModule.CustomClientBuilder() {
//             @Override
//             public void apply(OkHttpClient.Builder builder) {
//               builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
//             }
//           });
//       client.addPlugin(networkFlipperPlugin);
      client.start();

解决方案2:如果您不想注释掉NetworkFlipperPlugin。 此错误只发生在调试模式下,所以不再使用“react-native run-android”,而是使用“react-native run-android --variant=release”。或者在您的package.json中更改它: json { // ... "scripts": { "android": "react-native run-android --variant=release", // here "ios": "react-native run-ios", "start": "react-native start", "test": "jest", "lint": "eslint . --ext .js,.jsx,.ts,.tsx" }, // ... }

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接