【问题标题】:React Native and using websocketsReact Native 和使用 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,它工作正常 :)

标签: react-native


【解决方案1】:

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

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

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

【讨论】:

  • 如果其他人像我一样卡在这个问题上,请完全删除 WebSocket 导入。它是全局的,根本不需要导入。 @Marceli 你能从这个答案中删除这行代码吗?这有点误导。谢谢!
  • @LaneRettig +1 同意
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-04-11
  • 1970-01-01
  • 2022-09-29
  • 1970-01-01
相关资源
最近更新 更多