React Native与WebSocket不起作用
我听说Socket.io在React Native中没有正常工作,所以我决定使用普通的WebSocket。
我使用node.js来实现WebSocket服务器,并不难。 通过浏览器,我尝试了所有的工作,但与React本地,没有成功。
这些是我试图实现websocket服务器:
- expression-WS
- WS
快递只是没有任何错误消息工作。 只是它说没有连接的东西。
所以我把模块改成了ws,这个模块应该是客户端和服务器都需要的,所以我做了。 服务器工作,但是当在AVD上的android应用程序,它说:
需要未知的模块“url”。如果您确定该模块在那里,请尝试重新启动打包程序或运行“npm install”。
所以我完全删除了node_modules目录并重新安装它们,但同样的错误再次出现。
我正在使用节点v6.2.2,并且反应native-cli 1.0.0,react-native 0.33.0。
这是带有ws模块的服务器代码(与ws模块自述文件相同):
var WebSocketServer = require('ws').Server; var wss = new WebSocketServer({ port: 3000 }); wss.on('connection', (socket) => { socket.on('message', (msg) => { console.log('Received: ' + msg); }); socket.send('something'); });
这是客户端:
import React, { Component } from 'react'; import { AppRegistry, StyleSheet, Text, View } from 'react-native'; const WebSocket = require('ws'); class wschat extends Component { constructor() { super(); } componentDidMount() { var socket = new WebSocket("ws://localhost:3000"); socket.on('open', () => { socket.send('something'); }); socket.on('message', (data, flags) => { console.log(data); console.log(flags); }); } ...
为了避免命名冲突,在需要ws模块时,我使用了WebSock来代替WebSocket,但这不是问题。
有没有我错过的东西? React Native doc没有太多的解释,很难find工作的例子。 感谢您阅读,任何build议将非常感激。
最新的react native
支持websocket,所以我们不必依靠第三方websocket客户端库。
以下示例基于react native 0.45
,并且该项目由create-react-native-app
。
import React, {Component} from 'react'; import {Text, View} from 'react-native'; export default class App extends React.Component { constructor() { super(); this.state = { echo: '' }; } componentDidMount() { var socket = new WebSocket('wss://echo.websocket.org/'); socket.onopen = () => socket.send(new Date().toGMTString()); socket.onmessage = ({data}) => { console.log(data); this.setState({echo: data}); setTimeout(() => { socket.send(new Date().toGMTString()); }, 3000); } } render() { return ( <View> <Text>websocket echo: {this.state.echo}</Text> </View> ); } }