gpt4 book ai didi

Socket.io 无法与 Android 上的 React Native 配合使用

转载 作者:行者123 更新时间:2023-12-03 07:01:35 25 4
gpt4 key购买 nike

我最近正在学习 React Native,但在使用 Socket.IO 时遇到了问题。我正在使用最新的 React Native 和 cli(刚刚更新),这是我的代码:

import React, { Component } from 'react';
import {
AppRegistry,
StyleSheet,
Text,
View
} from 'react-native';

window.navigator.userAgent = 'react-native';

const io = require('socket.io-client/socket.io');
const socket = io('localhost:3000', { jsonp: false });
socket.connect();

class wschat extends Component { ... }

可以看到,代码非常简单,并且没有错误。这是我的服务器代码:

"use strict";
const express = require('express');
const app = express();
const http = require('http').Server(app);
const io = require('socket.io')(http);

http.listen(3000, () => {
console.log('WSChat Server for React-Native listening on port 3000');
});

io.on('connection', (socket) => {
console.log('connected: ' + socket.id);
});

看起来不错,而且它实际上可以在 ios 上运行,但在 android 上不起作用。我启用了远程调试器,并检查了属性,Socket.IO 本身已加载良好,但未建立连接。您可以看到服务器代码,当“连接”事件发生时,登录到控制台。

我使用了 AVD(nexus5) 和我的设备(LG G4 optimus),但两者都无法工作。我缺少什么?任何建议将非常感激!

最佳答案

虚拟机react-native运行的不是nodejs。这意味着您不能依赖诸如 socket.io-client 之类的包,而这些包又依赖于 Nodejs native 模块(httpfs加密等)

即socket.io-client 依赖于engine-i.o,在那里你会发现类似的东西:

var http = require('http');

狡猾的是,只要你处于开发模式,iOS 就由 Nodejs 支持,所以它可能看起来一切正常,但如果你编译应用程序,它就不会' t。

查看react-native-socketio ,遗憾的是(截至 2016 年 9 月 12 日)该项目维护得不好,但可以运行。

关于Socket.io 无法与 Android 上的 React Native 配合使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39427929/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com