Я использую 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 });
});
}
}
Я плохо знакомый, спасибо .