#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 });