Переадресация сокета-клиента на промежуточное программное обеспечение - PullRequest
1 голос
/ 08 января 2020

Я использую redux-socket.io

Я отправляю действие с внутреннего сервера клиенту с сервера . js

soc.emit('action', { type: 'SOCKET_TAG', data: tag });

В магазине. js Я создаю магазин с сокетом io Middleware

import { createStore, applyMiddleware } from "redux";
...
import createSocketIoMiddleware from 'redux-socket.io';
import io from 'socket.io-client';

let socket = io('ws://127.0.0.1:4000');
let socketIoMiddleware = createSocketIoMiddleware(socket, "server/");
let store = createStore(rootReducer, applyMiddleware(thunk, logger, socketIoMiddleware));
...

На самом деле, когда я запускаю действие сокета SOCKET_TAG из бэкэнда действие выполняется в userReducer

const userReducer = (state = initState, action) => {
    switch (action.type) {
        case actionTypes.SOCKET_TAG:
            console.log(actionTypes.SOCKET_TAG, action.data)
            return state;
        default:
            return state
    }

Но я бы хотел выполнить это в промежуточном программном обеспечении

export const initUser = () => {
    const db = client.getServiceClient(RemoteMongoClient.factory, "mongodb-atlas").db(dbName);

    return async (dispatch, getState) => { // async call to database
        let user; // User found with the tag
        client.auth.loginWithCredential(new AnonymousCredential()).then(u =>
            user = db.collection(collectionName).findOne({ tag })
        ).then(() => {
            dispatch({ type: actionTypes.INIT_USER, user });
        }).catch((err) => {
            dispatch({ type: actionTypes.ERROR, err });
        });
    }
}

Я плохо знакомый, спасибо .

...