【发布时间】:2017-05-01 18:31:39
【问题描述】:
下面是我尝试连接到节点 websocket 后端的 react 本机组件和节点 server.js 代码。
我的反应代码与服务器在同一台计算机上运行。我在这里和 github 上找到了很多不同的答案,但我都无法使用。
我还发现这个 question 从未被回答,this question 有一个答案,我无法开始工作(一年多前被问到)
我找到了this article,并尝试根据这些准则修改我的代码,但没有奏效。
反应代码
import React from 'react';
import { StyleSheet, Text, View, Image } from 'react-native';
const io = require('socket.io-client/socket.io');
let socket = io('http://localhost:3000');
export default class App extends React.Component {
constructor(props) {
super(props);
console.log(socket);
}
render() {
return (
<View>
<Text>Websocket</Text>
</View>
);
}
}
server.js
const express = require('express');
const http = require('http')
const socketio = require('socket.io');
const app = express();
const server = http.Server(app);
const websocket = socketio(server);
server.listen(3000, () => console.log('listening on *:3000'));
console.log(websocket)
// The event will be called when a client is connected.
websocket.on('connection', (socket) => {
console.log('A client just joined on', socket.id);
});
我正在使用以下版本的软件包
"expo": "^16.0.0",
"react": "16.0.0-alpha.6",
"react-native": "^0.43.4",
"socket.io-client": "^1.7.3"
【问题讨论】:
-
您链接到的文章说使用
require而不是import用于socket.io 库。你试过了吗? -
附带问题,上周末我第一次使用了 React Native 的内置 Web 套接字库。看起来不错,但这是我第一次使用网络套接字。 socket.io 库比原生库有什么优势?
-
在下面查看我的答案。
-
您是否尝试过使用 localhost 的 ip 地址来代替:let socket = io('127.0.0.1:3000');
-
请注意,您应该使用您的 ip 地址,因为您是从另一台机器连接的,在这种情况下是 android 模拟器,ip 必须是通常以 192.168.1.52 开头的东西
标签: javascript node.js react-native websocket socket.io