Javascript 一个连接-多个通道
我有2个监视程序,每个监视程序创建一个套接字连接。如何建立一个连接 有一种解决方案可以将到套接字的连接移动到一个变量中,并将其传递给观察者? 连接套接字的代码中有一条注释 观察者中的频道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
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');
}
};
});
};
谢谢你的帮助