如何解决一个连接 - 多个通道
我有 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 举报,一经查实,本站将立刻删除。