Redux-Saga Socket Отправить сообщение - PullRequest
0 голосов
/ 28 марта 2020

Я пытаюсь отправить сообщение функции сокета "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) {}
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...