node.js-socket.on中的sockets.io未从处理程序函数内的所有客户端拾取
我正在使用Node js构建一个应用程序,它以设定的间隔一个接一个地发送一系列消息。其中一个用户应该能够为房间中的每个人启动事件序列,然后所有用户都应该能够响应他们收到的消息 序列在一个单独的函数中处理,但当我调用该函数时,它只识别启动序列的套接字。我还尝试将函数放在for循环之外、io.on函数之外,并将套接字作为参数传递,然后返回消息并将for循环放在socket.on(“start”)函数之内 服务器端node.js-socket.on中的sockets.io未从处理程序函数内的所有客户端拾取,node.js,sockets,websocket,Node.js,Sockets,Websocket,我正在使用Node js构建一个应用程序,它以设定的间隔一个接一个地发送一系列消息。其中一个用户应该能够为房间中的每个人启动事件序列,然后所有用户都应该能够响应他们收到的消息 序列在一个单独的函数中处理,但当我调用该函数时,它只识别启动序列的套接字。我还尝试将函数放在for循环之外、io.on函数之外,并将套接字作为参数传递,然后返回消息并将for循环放在socket.on(“start”)函数之内 服务器端 io.on('connect', (socket) => {
io.on('connect', (socket) => {
socket.on('enter', ({name, room}, callback) => {
///working code to join users to room
});
socket.on('exit', ({room}) => {
///working code to exit users from room
})
socket.on('startMessages', ({name, room}) => {
startMessages(name, room)
})
async function startMessages(name, room) {
io.in(room).emit('messagesStarted', {message: ""})
const messages = await pool.query(
`SELECT * FROM messages
WHERE message_id = $1`, [room])
messages = messages.rows[0]
for (const message in messages) {
await new Promise(resolve => setTimeout(resolve, 15000));
io.in(room).emit('newMessage', {message: messages[message]})
socket.on('test', ({name}) => {
console.log(`${name} has done something`)
})
}
}
})
}
客户端
<button onClick= {() => {socket.emit('test', {name: user})}}> Test </button>
{socket.emit('test',{name:user}}}>test
无论哪个客户端启动该序列,服务器都会拾取它们的socket.emit('test'消息,但其他客户端都不会
任何帮助都将不胜感激