Wednesday, 15 March 2017

Socket.io private message over socket.id

I want to sent a private message to a specific user. I tried with

io.to(socketid)..

I tested with two different browser but the user at the second browser didn't get the message. What is wrong with my code?

message.component.html

    sendMessage(message) {
        this.socket.emit('add-message', {
            message: message,
            _id: this.userId
        });
    }

getMessages() {
        `enter code here`
        let observable = new Observable(observer => {

            this.socket.on('message', (data) => {
                console.log(data)

                observer.next(data);
            });
            return () => {
                this.socket.disconnect();
            };
        })
        return observable;
    }

www.ts(server side)

let io = require('socket.io').listen(server);


var clients = {};
io.on('connection', (socket) => {
    console.log('##############################################');
    console.log('user connected');
    console.log('##############################################');


    socket.on('add-message', (data) => {

        clients[data._receiver] = socket.id;
        console.log('##############################################');
        console.log(clients)
        console.log('##############################################');
        socket.to(socket.id).emit("message", {
            type: 'new-message',
            text: data.message
        });


    });



    socket.on('disconnect', function() {
        console.log('user disconnected');
    });
});



via Tony

No comments:

Post a Comment