我正在尝试向我的应用添加socket.io功能。
我以前从未使用过socket.io,所以我不知道如何从这里开始。
到目前为止,我一直使用MERN堆栈,下一步是实现socket.io的聊天功能。问题是,我不知道何时连接以及如何保存我的套接字。用户可以登录,所以我以为我可以在登录用户后就可以连接,但是随后在组件中创建了套接字,因此无法从其他任何地方访问它。
问题是,我使用JWT令牌进行身份验证,因此我有一个函数,如果令牌尚未过期,则可以在转到新页面时“使用户登录”。
if(localStorage.jwtToken){
const token = localStorage.jwtToken;
setAuthToken(token);
const user = jwt_decode(token);
store.dispatch(action_setCurrentUser(user));
store.dispatch(setGroupsOfUser({ id: user.id }));
const currentTime = Date.now() / 1000;
if(user.exp < currentTime){
store.dispatch(logoutUser());
window.location.href = './login';
}
}
我以为我可以在这里连接,但是后来我的ChatView组件无法访问它来发送消息和东西。我需要一个套接字来发送通知,即使用户不在聊天室中,并且ChatView组件也需要它来发送消息。
尝试在登录分派后进行连接,并将在线用户及其套接字ID存储在服务器上。
如果我尝试寻找解决方案,则每次遇到的问题都涉及使用socket.io进行身份验证,但是身份验证已经为我完成,因此我不确定如何进行。
按照建议,我决定在App.js中创建套接字,并将其存储在我的状态中。我可以在子组件中使用此存储状态,并在登录后将其在服务器上分配给用户。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句