React Native 和使用 websockets

Posted

技术标签:

【中文标题】React Native 和使用 websockets【英文标题】:React Native and using websockets 【发布时间】:2016-03-24 15:30:15 【问题描述】:

我有 react-native@0.17 这样的代码

import React,  AsyncStorage, Component, View, Text, WebView, WebSocket  from 'react-native';
import  Avatar, Divider, Subheader, COLOR  from 'react-native-material-design';

export default class Avatars extends Component 
    _setWebSocket = (endpoint, sessionToken) => 
      const ws = new WebSocket('wss://' + endPoint + '/api/live?authToken=' + sessionToken);
      console.log('Setting socket: ' + 'wss://' + endpoint + '/api/live?authToken=' + sessionToken);

我正在从以下位置调用代码:

componentDidMount() 
   this._setWebSocket(endpoint, token);
 

我在尝试让 WebSockets 作为代码工作时遇到问题:

console.log('Setting socket: ' + 'wss://' + endpoint + '/api/live?authToken=' + sessionToken); 

从不触发。如果我在创建新的 WebSocket 之前放置控制台日志,它就会运行。我做错了什么以及如何调试,因为 chrome 没有结合 Genymotion 显示有用的信息。

【问题讨论】:

您是否使用 Genymotion 上下文菜单中的“远程调试 JS”?如果没有,请在控制台中输入 adb logcat *:S ReactNative:V ReactNativeJS:V 以查看日志 我的代码成功实例化了一个 WebSocket,但由于未知原因触发了它的 onerror 处理程序:/ 最终使用了 socket.io,它工作正常 :) 【参考方案1】:

问题很容易找到,可能我很累

import React,  AsyncStorage, Component, View, Text, WebView, WebSocket  from 'react-native';

我将 WebSocket 导入,但这是本机模块... 因此,从导入依赖项中删除 WebSocket 会有所帮助。

【讨论】:

如果其他人像我一样卡在这个问题上,请完全删除 WebSocket 导入。它是全局的,根本不需要导入。 @Marceli 你能从这个答案中删除这行代码吗?这有点误导。谢谢! @LaneRettig +1 同意

以上是关于React Native 和使用 websockets的主要内容,如果未能解决你的问题,请参考以下文章

使用 react-native-pdf 在 react-native 上获取准确的 x 和 y 坐标

React-native:如何在 React-native 中使用(和翻译)带有 jsx 的 typescript .tsx 文件?

react-native字体react-native-vector-icons在ios下的使用

React Native 和使用 websockets

React Native项目中集成react-native-vector-icons

React-native-splashscreen 和导航