问题描述
我有 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 (将#修改为@)