Я пытаюсь отправить сообщение функции сокета "pong", но у меня есть ошибка.
Я скопировал код из официальной документации.
index. js: 1 Ошибка: применимо: аргумент типа [context, fn] имеет неопределенное значение или ноль fn
при проверке (io-6de156f3. js: 33)
at validateFnDescriptor (io-6de156f3. js: 467)
at apply (io-6de156f3. js: 537)
в понг (сокет .action. js: 29)
в pong.next ()
в следующем (redux-saga-core.esm. js: 1157)
в currCb (redux-saga-core. esm. js: 1251)
import { eventChannel, END } from 'redux-saga';
import { take, put, call, fork, apply, delay } from 'redux-saga/effects';
function createWebSocketConnection() {
return new Promise((resolve, reject) => {
const socket = new WebSocket('ws://localhost:8080');
socket.onopen = function() {
resolve(socket);
};
socket.onerror = function(evt) {
reject(evt);
};
});
}
function createSocketChannel(socket) {
return eventChannel(emit => {
socket.onmessage = event => {
emit(event.data);
};
return () => {
socket.close();
};
});
}
function* pong(socket) {
yield delay(5000);
yield apply(socket, socket.emit, ['pong']); // call `emit` as a method with `socket` as context
}
export function* saga() {
const socket = yield call(createWebSocketConnection);
const socketChannel = yield call(createSocketChannel, socket);
try {
while (true) {
console.log('work')
const message = yield take(socketChannel);
console.log(message);
yield fork(pong, socket);
}
} catch (e) {}
}