WapShivam
WapShivam

Reputation: 964

socket.emit is not working under socket.on

I am sending data from client to server like

socket.emit('event1', data);

this data is received by server perfectly like

socket.on('event1', function (data){
    console.log(data);
});

but when i am sending data from server to client under this socket.on event none of emit event is not working only socket.broadcast.emit is emitting data to client.js

 socket.on('event1', function (data){
    socket.to(data.room).emit('event2', data);             // not working
    io.in(data.room).emit('event2', data);                 // not working
    io.sockets.in(data.room).emit('event2', data);         // not working
    socket.emit('event2', data);                           // not working
    socket.broadcast.to(data.room).emit('event2', data);   // not working

    socket.broadcast.emit('event2', data);                 // working
});

Upvotes: 1

Views: 89

Answers (1)

ant
ant

Reputation: 1278

The code examples you have shared are missing the comma operator ,, which is used to separate function arguments or other terms in a statement or expression.

Here is every example you submitted, with the comma operator included:

socket.emit('event1', data);

socket.on('event1', function (data) {
    console.log(data);
});

socket.on('event1', function (data) {
    socket.to(data.room).emit('event2', data);             // not working
    io.in(data.room).emit('event2', data);                 // not working
    io.sockets.in(data.room).emit('event2', data);         // not working
    socket.emit('event2', data);                           // not working
    socket.broadcast.to(data.room).emit('event2', data);   // not working

    socket.broadcast.emit('event2', data);                 // working
});

Upvotes: 1

Related Questions