我是Socket IO的初学者,现在我对Socket IO有一个困惑的问题,希望你们能帮助我清除它。
我开发了Socket服务器,该服务器用户可以将消息发送到特定的会议室(线程)。下面的示例是线程1 (id=1)
和线程2 (id=2)
我的服务器:
const socketEvents = (io) => {
io.on('connection', (socket) => {
const socketId = socket.id
console.log(`User with ID ${socketId} connected`)
socket.on('disconnect', () => {
console.log(`SocketId: ${socket.id} disconnected`)
})
socket.on('open-thread', function(uid) {
console.log('Join thread', uid);
socket.join(uid);
});
socket.on('close-thread', function(uid) {
console.log('Close thread', uid);
socket.leave(uid);
});
socket.on('send-message', (payload) => {
console.log('User', socket.id, 'send message into', payload.thread_uid, 'thread');
io.to(payload.thread_uid).emit("update-thread", payload )
//db.Message.create({ 'user_id': payload.user.id, 'thread_uid': payload.thread_uid, 'content': payload.content })
})
})
}
module.exports = socketEvents
还有我的客户:
我听服务器更新线程的方式:
this.$socket.emit('open-thread', this.thread_uid);
this.$socket.on('update-thread', function (payload) {
this.messageData.push({content: payload.content})
})
以及我向服务器发送新消息的方式:
this.$socket.emit('send-message', { 'user': 1, 'content': content, 'thread_uid': this.thread_uid });
我认为我的代码还可以,但是当我尝试在客户端中发送示例消息(Hello test sample
)时,它不是在特定房间监听,而是在所有房间监听:
请给我我的错误。赞赏!