一个连接 - 多个通道

问题描述

我有 2 个观察者,每个观察者创建一个套接字连接。如何建立一个连接?

有没有办法把socket的连接移动到一个变量中,然后传给Watchers? 连接socket的代码中有注释。

观察者中的频道

export function* watchOnSocketBinanceRT() {
  while (true) {
    const { socketToken } = yield take(types.BINANCE_SOCKET_OPEN);
    const socket = yield call(socketConnectionBinance,socketToken); // Creates a new connection
    const channel = yield call(socketChannelBinanceRT,socket);

    if (socket.onopen) {
      yield put({ type: types.BINANCE_SOCKET_CONNECTED });
    }

    yield fork(socketSendBinance,socket);
    yield fork(socketCloseBinance,socket);

    const { cancel } = yield race({
      task: call(socketOnmessageBinance,channel),cancel: take(types.BINANCE_SOCKET_CLOSED),});

    if (cancel) {
      buffersRT.flush();
      channel.close();
    }
  }
}

export function* watchOnSocketBinance() {
  while (true) {
    const { socketToken } = yield take(types.BINANCE_SOCKET_OPEN);
    const socket = yield call(socketConnectionBinance,socketToken); // Creates a new connection
    const channel = yield call(socketChannelBinance,});

    if (cancel) {
      channel.close();
    }
  }
}

套接字连接

const socketConnectionBinance = socketToken => {
  return new Promise((resolve,reject) => {
    let socket;
    if (socketToken) {
      socket = new WebSocket(`${wsUrlBinance()}/${socketToken}`);
    } else {
      socket = new WebSocket(`${wsUrlBinance()}`);
    }

    socket.onopen = function () {
      resolve(socket);
      console.log('Binance connection opened');
    };
    socket.onerror = function (event) {
      reject(event);
      console.log('Binance socket error: ',event);
    };
    socket.onclose = function (event) {
      if (event.wasClean) {
        console.log('Binance connection closed');
      }
    };
  });
};

感谢您的帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...