【问题标题】:socket io on method is not executing套接字 io on 方法未执行
【发布时间】:2020-06-19 17:12:01
【问题描述】:

我正在使用带有套接字 io 的本机反应,我试图弄清楚为什么套接字 io .on 没有执行。有人有想法吗?

例如客户端套接字 io,console.log 不会被调用,

  socket.on('streamStarted', () => console.log('success'));

但是 io.connection 被调用,因为我可以看到 console.log('user connected to main connection') 日志。我可能做错了什么?

服务器端

io.on('connection', socket => {
  console.log('user connected to main connection');
  socket.on('streamStarted', () => {
    console.log('user connected to stream');
    peerConnections.set(socket.id, socket);
  });
  socket.on('offerOrAnswer', data => {
    console.log(data);
    socket.emit('offerOrAnswer', data);
  });

  socket.on('disconnect', () => {
    console.log('disconnected');
    peerConnections.delete(socket.id);
  });
});

反应原生客户端

const socket = io('http://bf1f2213f095.ngrok.io');
React.useEffect(() => {
    socket.on('streamStarted', () => console.log('success'));
    socket.on('offerOrAnswer', sdp => {
      console.log('check for offer', sdp);
      // set sdp as remote description
      setOffer(sdp);
      pc.setRemoteDescription(new RTCSessionDescription(sdp));
    });
    socket.on('candidate', candidate => {
      pc.addIceCandidate(new RTCIceCandidate(candidate));
    });

    startStream();
}, []);

【问题讨论】:

  • 好像你没有从服务器发出 streamStarted 而是在上面听

标签: reactjs react-native socket.io


【解决方案1】:

为了触发您的socket.on('streamStarted', () => console.log('success')); - 您必须在某处发出此消息:

React.useEffect(() => {
    socket.emit('streamStarted', {foo: 'bar'});
}, []);

【讨论】:

  • socket.on 的目的是什么?如果我可以使用发射?这就是我的困惑
  • 顺便说一句,我向服务器添加了一个发射,并在调用 socket.on 之前做了一个客户端发射,所以它可以工作。
  • socket io的点是更深层次的问题。可能这会有所帮助:ably.io/concepts/socketio
猜你喜欢
  • 2019-02-20
  • 2017-10-14
  • 2021-09-14
  • 1970-01-01
  • 2022-09-28
  • 2014-01-03
  • 1970-01-01
  • 1970-01-01
  • 2019-05-30
相关资源
最近更新 更多