Vorschläge zur Verbindung redux/react-native zu socket.io nach eine HTTP-Anfrage? Ich muss die HTTP-Anfrage erst machen, um ein Authentifizierungs-Session-Cookie zu speichern, und dann eine Verbindung zu socket.io herstellen. Alle Beispiele, die ich gesehen habe (d. H. https://www.npmjs.com/package/redux-socket.io), werden sofort mit socket.io verbunden. Mein Denken ist, auf Aktionen hören und wie so in benutzerdefinierter redux Middleware verbinden:React-native Redux socket.io Sitzungsauthentifizierung
import React from 'react-native'
import * as actions from './actions/';
import io from 'socket.io-client/socket.io';
export default socketMiddleware = (store) => {
return next => action => {
const result = next(action);
// var socket = io();
//
if (action.type === 'HTTP_CONNECT_SUCCEEDED') {
debugger;
const socket = io('localhost:3000', {jsonp: false);
socket.on('connect', function(){console.log('Connected!')});
}
//
// socket.on('message', data => {
// store.dispatch(actions.addResponse(data));
// });
//
// if (socket && action.type === actions.ADD_MESSAGE) {
// let messages = store.getState().messages;
// socket.emit('message', messages[messages.length -1]);
// }
return result;
};
}
Dies funktioniert zu verbinden, aber ich habe meine Steckdose innerhalb der ‚HTTP_CONNECT_SUCCESS‘ bedingt, zu definieren und so meine andere Socket-Aktionen und Veranstaltungen undefiniert, bis diese Aktion passiert. Wie kann ich mit einer Aktion eine Verbindung zu WS herstellen und auch meine Socket-Ereignisse und andere Aktionen anzeigen?
marginalen Verbesserung, aber man konnte ein 'var' anstelle einer globalen, dh' var verwenden socket = null 'anstelle von' globalSocket = typeof ... '. Dann setzen Sie in Ihrem 'if (action.type === 'HTTP_CONNECT_SUCCEEDED') '' socket' und senken Sie' if (globalSocket! = False) 'nach' if (socket) '. – BarthesSimpson