Socket.io 使用套接字进行本机反应。io不';行不通

Socket.io 使用套接字进行本机反应。io不';行不通,socket.io,react-native,Socket.io,React Native,我创建了简单的socket.io服务器和react native项目并进行了测试,但react native上的socket.io根本不起作用。 我在控制台上打印了“socket.io client”,它加载得很好,我使用socket.io制作了简单的HTML文件,它可以工作,但只有React Native不能工作。 我使用的是React native 0.26.2和socket.io 1.4.6 这是我的服务器代码: "strict mode"; const express = require

我创建了简单的socket.io服务器和react native项目并进行了测试,但react native上的socket.io根本不起作用。 我在控制台上打印了“socket.io client”,它加载得很好,我使用socket.io制作了简单的HTML文件,它可以工作,但只有React Native不能工作。 我使用的是React native 0.26.2和socket.io 1.4.6

这是我的服务器代码:

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

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

http.listen(3000, () => {
    console.log('server started on 3000');
});

// web testing
app.get('/', (req, res, next) => {
    res.sendFile(__dirname + '/index.html');
});
这是rn代码:

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

import "./userAgent"; //window.navigator.userAgent = "react-native";

const io = require('socket.io-client/socket.io');

class SocketChat extends Component {
    constructor(props) {
        super(props);
        this.socket = io('localhost:3000', { jsonp: false });
        this.state = {
            text: null
        };
    }
    ...
}

我听说,将React native与socket.io一起使用会导致ajax长轮询而不是websocket,所以我添加了“用户代理”技巧。无论它是否工作,甚至连连接都没有建立,但如果我尝试使用浏览器,它工作得很好。非常感谢您告诉我该怎么做。

我通过更换另一个websocket模块解决了这个问题。Socket.IO在Android上不起作用,正如有人对我说的,Socket.IO在内部使用节点本机模块,因此在构建生产应用程序后,它应该不起作用。

我还使用“ws”模块创建了websocket服务器,并将代码改为直接使用websocket(react native正式支持),或者不起作用。我只是在iOS上检查了一下,它成功了。所以我在我的android设备(不是虚拟设备)上进行了测试,它不起作用。我觉得有点问题。如果您有任何建议,我们将不胜感激。现在还是这样吗?