Reputation: 664
I cannot figure out what I am missing here. For the second case, I checked for socket.id while sending the message and logged it when response is received,it turned out to be the same
socket.js
var socket = require('socket.io')(),
socketApi = {};
socketApi.io = socket;
socketApi.io.on('connection',(client) => {
client.on('clientMessage', (msg) => {
console.log('hi');
client.emit('serverMessage',msg);
})
client.on('disconnect',() => {
socketApi.io.emit('serverMessage','client is disconnected');
console.log('disconnected');
})
})
module.exports = socketApi;
client.js
getServerResponse() {
socket.on('serverMessage',(msg) => {
console.log(msg);
})
}
Upvotes: 2
Views: 1883
Reputation: 21
According to the docs broadcast.emit
sends to all except the sender and emit
sends to the sender only: https://socket.io/docs/emit-cheatsheet/.
I was in the same issue so I ended up calling both:
// socket.io server
io.on('connection', socket => {
socket.on('message', (data) => {
messages.push(data)
socket.broadcast.emit('message', data) // sends to all except the sender
socket.emit('message', data) // sends to the sender
})
})
Upvotes: 2