использование сокета ввода-вывода как поделиться сообщением со всеми пользователями комнаты, кроме отправителя

#javascript #node.js #socket.io

Вопрос:

Я использую socket io и express. я хочу передать свое сообщение всем пользователям комнаты, но вместо пользователей этой комнаты все подключенные пользователи получают сообщение. Идентификатор номера-это идентификатор номера

 const app = require('express')(); const http = require('http').Server(app); const io = require('socket.io')(http); const port = process.env.PORT || 8080; const bodyParser = require('body-parser'); const cors = require('cors'); const path = require('path'); app.use(cors({origin: true})); app.use(bodyParser.urlencoded({ extended: false })); app.use(bodyParser.json()); io.on('connection', async (socket) =gt; { console.log('user connected'); }   

Теперь это блок сообщений

 socket.on('message' , async (data)=gt;{ //want to broadcast message to all users except sender  //Room is Group1Room and room id is RoomId io.emit('message', {message:"hello" , socketId:socket.id}) //recive message  io.on('message' , (data)=gt;{ console.log('data is ' data); }) }  ```ata,{ where: { id } });  

Ответ №1:

socket.emit используется для глобального распространения события.Все пользователи, подключенные к сокету, будут прослушивать и получать данные. для обмена сообщениями в комнате используйте

 socket.broadcast.to(roomid).emit()  

ваш код будет таким

 socket.broadcast.to(event).emit( 'message' , {message:message, socketId:socket.id  });