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