【问题标题】:socket.onopen() method won't be called in websocket or socket.io-client在 websocket 或 socket.io-client 中不会调用 socket.onopen() 方法
【发布时间】:2018-01-29 17:41:21
【问题描述】:

如 react native 官方文档中所述,我已尝试将 socket.io-client 用于 react native 和 websockets。以下代码不会引发错误,但也不会显示后端日志中的任何变化。

const socket = new WebSocket('http://5aa3657a.ngrok.io/');
console.log(socket);
socket.onopen = () => {
  console.log('sending');
  socket.send('checkInDetected', 'hello');
}

import SocketIOClient from 'socket.io-client/dist/socket.io.js';
this.socket = SocketIOClient('http://5aa3657a.ngrok.io/', { transports: ['websocket'] });
this.socket.emit('helloIeacon', 'yu');

【问题讨论】:

    标签: javascript node.js reactjs react-native socket.io


    【解决方案1】:

    我现在正在构建一个 RN 应用程序,并在其中使用 Socket.io。以下是我们如何在应用中实现它的方式。

    像这样在组件的构造函数中启动socket,并在构造函数中管理socket。

     constructor(props) {
        super(props);
    
        this.socket = SocketIOClient(<backend url>);
    
        this.socket.emit('senddata', { userid:1, userName: 'john'});
    
        this.socket.on('questions', (Questiondata) => {
          cw(Questiondata)
        });
    }
    

    Socket 现在完全在组件内部可用,您可以在任何地方使用this.socket 访问它

    【讨论】:

    • 你能分享一下你正在使用的 RN 版本和库吗?在使用 socket.io-client 时,我遇到了以下错误,“未能在 XMLHttpRequest 上设置 responseType 属性。
    • "react-native": "^0.49.5","socket.io-client": "^2.0.4"
    • 尝试了以下代码,但是当我检查 this.socket 的控制台日志时,它会显示类似的内容。连接:假,断开连接:真。我正在使用“react”:“16.0.0-beta.5”,“react-native”:“0.49.5”,“socket.io-client”:“^2.0.4”
    • 你连接到后端了吗?
    • 后端控制台显示状态码 400 或 200 但未根据事件处理程序显示响应
    猜你喜欢
    • 1970-01-01
    • 2014-04-14
    • 2016-01-06
    • 2013-11-09
    • 2014-04-09
    • 1970-01-01
    • 2021-02-25
    • 1970-01-01
    • 2023-03-18
    相关资源
    最近更新 更多