我在反应原生聊天应用程序中使用 socket.io-client。套接字连接正常,它响应 on('connection') 但它不响应消息。配置 socket.io-client 以处理自定义事件的正确方法是什么?我找到的所有文档看起来都像我的实现。我的消息模块:
import io from 'socket.io-client';
Messenger = (props) => {
const [data, setData] = useState([]);
const [test, setTest] = useState('');
const socket = io('https://test.com', {
autoConnect: false,
});
const getCredentials = async () => {
await socket.connect();
await fetchMessages();
}
useEffect(() => {
socket.connect();
socket.on('connect', function() {
setTest('connected!');
});
socket.on('message', function(message) {
setTest('message!');
});
socket.on('typing', function(typing) {
setTest('typing');
});
getCredentials();
}, []);
return (...);
}
我的服务器:
var socket_io = require( 'socket.io' );
const io = socket_io();
io.use((socket, next) => {
sessionMiddleware(socket.request, {}, next);
});
io.on( "connection", function( socket )
{
if (socket.request.session.auth_user) {
redisClient.set(socket.request.session.auth_user._id.toString(), socket.id);
socket.on( "disconnect", function() {
console.log( "A user disconnected" );
redisClient.del(socket.request.session.auth_user._id);
});
}
});