2
我創建了簡單的socket.io服務器並對原生項目進行了測試,但React Native上的socket.io完全無法工作。 我在控制檯上打印了「socket.io-client」,並且它裝載得很好,並且我使用socket.io製作了簡單的HTML文件,它可以工作,但只有React Native不起作用。 我使用的是React native 0.26.2和socket.io 1.4.6。React Native與socket.io不起作用
這是我的服務器代碼:
"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
};
}
...
}
我聽說,採用原生作出反應與socket.io使AJAX長輪詢,而不是WebSocket的,所以我添加了「用戶代理」技巧。無論它是否工作,即使連接沒有建立,但如果我嘗試瀏覽器,它運作良好。我非常感謝告訴我該怎麼做。
我還創建了帶'ws'模塊的websocket服務器,並將代碼直接更改爲使用websocket(正式由react-native支持),要麼不工作。 – modernator
我剛剛在iOS上檢查過,它工作。所以我測試了我的android設備(不是虛擬設備),它沒有工作。我認爲有一些問題。任何意見將不勝感激。 – modernator