所以我有一个应用程序运行节点js,socket.io作为后端,普通的javascript作为前端.我的应用程序有一个登录系统,目前只需让客户端在连接后立即发送其登录数据.
现在我认为将登录数据与handshakeData一起发送会更好,因此我可以在连接时(而不是在建立连接之后)直接让用户登录,在登录数据无效时分别拒绝授权.
我认为最好将我的附加数据放在handshakeData的标题部分,所以任何想法我怎么能这样做?(如果可能的话,无需修改socket.io,但如果这是我可以忍受的唯一方式)
我是React-Redux技术的新手,我希望你能帮助我实现一些功能.
我想用套接字(socket.io)实现一个聊天应用程序.首先,用户必须注册(我在服务器端使用护照),之后,如果注册成功,则用户必须连接到webSocket.
我认为最好的方法是使用像管道这样的中间件来执行所有操作,并根据什么样的操作获取中间件,做不同的事情.
如果操作类型是AUTH_USER,则创建客户端 - 服务器连接并设置将来自服务器的所有事件.
如果操作类型是MESSAGE向服务器发送消息.
代码片段:
----- socketMiddleware.js ----
import { AUTH_USER, MESSAGE } from '../actions/types';
import * as actions from 'actions/socket-actions';
import io from 'socket.io-client';
const socket = null;
export default function ({ dispatch }) {
return next => action => {
if(action.type == AUTH_USER) {
socket = io.connect(`${location.host}`);
socket.on('message', data => {
store.dispatch(actions.addResponse(action.data));
});
}
else if(action.type == MESSAGE && socket) {
socket.emit('user-message', action.data);
return next(action)
} else {
return next(action)
} …Run Code Online (Sandbox Code Playgroud)