我创建简单的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'特技。是否有效,即使连接尚未建立,但如果我尝试使用浏览器,则效果很好。非常感谢我,告诉我该怎么做。
答案 0 :(得分:0)
我通过更换另一个websocket模块解决了这个问题。 Socket.IO不能在Android上工作,有人对我说,Socket.io在内部使用节点本机模块,所以在构建生产应用程序之后它应该不起作用。