rickyduck
rickyduck

Reputation: 4084

Socket.io broadcast to not working

I have the following code:

var room = "1";
var chat = io.connect("localhost:3700/");
    self.chat = chat;
    chat.on("connection", function(socket){
        socket.emit("room", room);
        socket.on('message', function (data) {
            self.receiveMessage(data);
        });
    });

 chat.broadcast.to(room).emit('send',"HEllo");

receiveMessage:

receiveMessage: function(data){

        var $elem = $("#chat1");
        var $content = $elem.find(".messageText");
        if(data.message) {
            messages.push(data);
            var html = '';
            for(var i=0; i<messages.length; i++) {
                html += '<b>' + (messages[i].username ? messages[i].username : 'Server') + ': </b>';
                html += messages[i].message + '<br />';
            }
            $content.html(html);
        } else {
            console.log("There is a problem:", data);
        }
    }

The line chat.broadcast.to(room).emit('send',"HEllo"); gives me the error:

Uncaught TypeError: Cannot call method 'to' of undefined

What am I doing wrong?

Upvotes: 2

Views: 3664

Answers (1)

Simone
Simone

Reputation: 21262

Not really sure but I think you can send a broadcast only on connection.

You can try this:

var room = "1";
var chat = io.connect("localhost:3700/");
    self.chat = chat;
    chat.on("connection", function(socket){
        socket.emit("room", room);
        socket.on('message', function (data) {
            self.receiveMessage(data);
        });


        chat.broadcast.to(room).emit('send',"HEllo");
    });

Of course you can also send the broadcast in a separate handler, i.e.:

var room = "1";
var chat = io.connect("localhost:3700/");
    self.chat = chat;
    chat.on("connection", function(socket){
        socket.emit("room", room);
        socket.on('message', function (data) {
            self.receiveMessage(data);
        });

        socket.on('foo event', function(data) {
            chat.broadcast.to(room).emit('send',"HEllo");
        }
    });

Upvotes: 3

Related Questions