用socket.io反应Native并不起作用

时间:2016-05-29 02:44:45

标签: socket.io react-native

我创建简单的socket.io服务器并对本机项目做出反应并进行测试,但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');
});

这是代码:

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
        };
    }
    ...
}

正如我所听到的,使用带有socket.io的React native会导致ajax长轮询而不是websocket,所以我添加了#user; agent'特技。是否有效,即使连接尚未建立,但如果我尝试使用浏览器,则效果很好。非常感谢我,告诉我该怎么做。

1 个答案:

答案 0 :(得分:0)

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