【问题标题】:React Native Websocket JSON communicationReact Native Websocket JSON 通信
【发布时间】:2017-06-15 09:13:01
【问题描述】:

我正在尝试设置一个通过 JSON 与网络服务器通信的 Websocket 客户端。我在网上没有找到任何好的例子。

我只在网上找到了这段代码:

var ws = new WebSocket('ws://host.com/path');

ws.onopen = () => {
  // connection opened
  ws.send('something'); // send a message
};

ws.onmessage = (e) => {
  // a message was received
  console.log(e.data);
};

ws.onerror = (e) => {
  // an error occurred
  console.log(e.message);
};

ws.onclose = (e) => {
  // connection closed
  console.log(e.code, e.reason);
};

我不知道如何将此代码集成到我的应用程序代码中才能运行。 我需要为它安装一些软件包吗? 我正在为我的学习做一个项目,最后我应该有一个测验应用程序,它连接到服务器以获取游戏的问题和答案。

感谢您的帮助!

【问题讨论】:

    标签: android json react-native websocket


    【解决方案1】:

    在 react-native(或任何相对较新的 JS 环境 for that matter)中使用 WebSocket 不需要任何其他东西。您找到的示例几乎涵盖了入门所需的所有内容。下一步是将其绑定到您的 React 逻辑。例如,您可以创建一个看起来像这样(省略细节)的WebSocketController 组件

    class WebSocketController extends React.Component {
      componentDidMount(){
        this.ws = new WebSocket('ws://host.com/path');
        this.ws.onmessage = this.handleMessage.bind(this);
        this.ws.onerror = //...
      }
      handleMessage(e){
        // dispatch event (á la redux, flux), or do something else
      }
      componentWillUnmount(){
        // close WS
      }
    }
    

    在你的 React 层次结构中渲染它,它将沿着你的其余组件启动。如果您需要更具体的内容,请告诉我们。

    【讨论】:

    • 我在方法 handleMessage(e) 中使用 console.log(e.data) 实现了您的代码,只是想看看它是否有效,但我收到此错误:ERROR Packager can't listen on port 8081 很可能另一个进程已经在使用此端口 运行以下命令以找出哪个进程: lsof -i :8081 然后,您可以关闭另一个进程:kill -9 或在不同的端口上运行打包程序。
    • 这是一个不同的错误,通常可以通过检查 lsof 的输出来修复。可能您在那里运行了另一个打包程序实例。
    • 好的,这个错误不再存在,但是当我尝试使用带有 console.log(e.data) 的实现代码运行我的应用程序时,它不会在控制台上显示任何内容。在我的 IDE Webstorm 控制台中,它从这条消息 [intellij] 与 React Native 应用程序的代理(Packager)建立连接到这条消息 [intellij] 从代理(Packager)断开连接到 React Native 应用程序。很快重试重新连接...
    • 您确定在实施更改之前没有收到这些错误吗?
    • 哦,是的,你是对的!请原谅我之前遇到的这个错误!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-10-10
    • 1970-01-01
    • 2016-12-07
    • 1970-01-01
    • 2022-09-24
    相关资源
    最近更新 更多