One connection - multiple channels

I have 2 watchers, each one creates a socket connection. How to make one connection?

There is a solution to move the connection to the socket into a variable and pass it to Watchers? There is a comment in the code where the socket is connected.

Channels in watchers

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();
    }
  }
}

Socket connection

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');
      }
    };
  });
};

Thanks for the help!