React-native Redux socket.io 会话身份验证
React-native Redux socket.io session authentication
关于在HTTP请求后将redux/react-native连接到 socket.io 的任何建议?我需要先发出 http 请求来存储身份验证会话 cookie,然后连接到 socket.io。我看到的所有示例(即 https://www.npmjs.com/package/redux-socket.io)都立即连接到 socket.io。我的想法是倾听操作并在自定义 redux 中间件中像这样连接:
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;
};
}
这适用于连接,但我必须在"HTTP_CONNECT_SUCCESS"条件中定义我的套接字,因此在该操作发生之前,我的其他套接字操作和事件是未定义的。 如何在操作上连接到 WS,并公开我的套接字事件和其他操作?
我希望暂时的
技巧是使我的套接字变量全局化,并将事件包装在有条件的中:
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);
globalSocket = typeof globalSocket === 'undefined' ? false : globalSocket
if (action.type === 'HTTP_CONNECT_SUCCEEDED') {
globalSocket = io('http://localhost:3000', {jsonp: false});
globalSocket.on('connect', () => {
console.log('Connected!')
});
}
if (globalSocket != false) {
globalSocket.on('friends', data => {
store.dispatch(actions.updateFriends(data));
})
if (action.type === 'CREATE_QUESTION') {
globalSocket.emit('createQuestion', action.question);
}
}
return result;
};
}
相关文章:
- Sencha Touch和远程服务器上的身份验证
- Javascript清除缓存以清除基本身份验证凭据
- REST的面向公众的身份验证机制
- 当需要身份验证时,ui路由器不会重定向
- React-native Redux socket.io 会话身份验证
- 余烬简单身份验证在会话中保存用户配置文件
- Node & Express + jQuery:在对会话保存进行身份验证后
- 通过令牌进行身份验证,如果令牌失败,则使用Passport通过会话进行身份验证
- 在Windows身份验证- ASP.Net中,强制用户在会话清除后重新登录
- Node.js使用Express会话进行非常基本的本地身份验证
- socket.io身份验证与共享会话数据,io.use()的工作原理
- 如何确定我在哪个会话上进行 Meteor 中的 OAuth 重新身份验证
- 正在从会话中存储的web浏览器读取身份验证信息
- 如果我使用基于令牌的身份验证,我还需要会话吗?
- 正在对Parse.com用户和会话服务器端进行身份验证
- 如何使用基于会话的身份验证来确定用户是否仍在登录
- 使用Javascript的用户身份验证和会话
- 标签打开时会话的身份验证逻辑
- 如何将简单的身份验证会话注入适配器
- ASP.Net MVC:使用windows身份验证处理应用程序会话