Javascript 一个连接-多个通道

Javascript 一个连接-多个通道,javascript,reactjs,sockets,redux-saga,socketchannel,Javascript,Reactjs,Sockets,Redux Saga,Socketchannel,我有2个监视程序,每个监视程序创建一个套接字连接。如何建立一个连接 有一种解决方案可以将到套接字的连接移动到一个变量中,并将其传递给观察者? 连接套接字的代码中有一条注释 观察者中的频道 export function* watchOnSocketBinanceRT() { while (true) { const { socketToken } = yield take(types.BINANCE_SOCKET_OPEN); const socket = yield cal

我有2个监视程序,每个监视程序创建一个套接字连接。如何建立一个连接

有一种解决方案可以将到套接字的连接移动到一个变量中,并将其传递给观察者? 连接套接字的代码中有一条注释

观察者中的频道

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, 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) {
      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');
      }
    };
  });
};
谢谢你的帮助