【发布时间】:2021-02-14 05:24:39
【问题描述】:
我有一个带有身份验证服务器的套接字,如下所示:
const io = require('socket.io').listen(3002);
const jwt = require('jsonwebtoken');
io.use((socket, next) => {
if (socket.handshake.query && socket.handshake.query.token) {
jwt.verify(
socket.handshake.query.token,
'4-8-15-16-23-42',
(err, decoded) => {
if (err) return next(new Error('Authentication error'));
socket.decoded = decoded;
next();
}
);
} else {
next(new Error('Authentication error'));
}
}).on('connection', socket => {
socket.emit('connect', 'socket server is connected'); //sending message
socket.on('recieved', socket => {
console.log(socket);
});
});
而客户端是这样的:
...
useEffect(() => {
const token = sessionStorage.getItem('token');
const socket = io('http://localhost:3002', {
query: { token }
});
socket.on('connect', msg => {
console.log(msg); //undefined
});
}, []);
...
问题是连接已经完成,但是之后当我想从我的服务器发出另一个带有一些有效负载的事件时,我无法通过收听它来接收另一端的有效负载。
【问题讨论】:
-
您是否尝试将“套接字”作为依赖项传递给 useEffect 依赖项数组?
-
@BrijeshPrasad 是的,我试过了。
标签: javascript node.js reactjs events socket.io