在主要频道上连接并退出消息

时间:2014-06-04 13:34:59

标签: node.js socket.io

如果有新人加入或用户退出聊天,我想向用户发送消息。 我真的不知道从哪里开始让这个功能起作用。

断开连接消息'此用户已消失'所有On Connect"用户已连接到聊天框"

app.js

var express = require('express'),
    app = express(),
    server = require('http').createServer(app),
    io = require('socket.io').listen(server),
    nicknames = [];

server.listen(8000);

app.get('/', function(req, res){
    res.sendfile(__dirname + '/index.html');
});

io.sockets.on('connection', function(socket){
    socket.on('new user', function(data, callback){
        if (nicknames.indexOf(data) != -1){
            callback(false);
        } else{
            callback(true);
            socket.nickname = data;
            nicknames.push(socket.nickname);
            updateNicknames();
        }
    });

    function updateNicknames(){
        io.sockets.emit('usernames', nicknames);
    }

    socket.on('send message', function(data){
        io.sockets.emit('new message', {msg: data, nick: socket.nickname});
    });

    socket.on('disconnect', function(data){
        if(!socket.nickname) return;
        nicknames.splice(nicknames.indexOf(socket.nickname), 1);
        updateNicknames();      

    });


})

1 个答案:

答案 0 :(得分:0)

您可以使用广播功能。这将广播到除发送广播的插座之外的所有其他插座。

socket.on('disconnect', function () {
    socket.broadcast.emit('leave',{name:name});
});



socket.on('leave', function (msg) {
    //Add msg that msg.name is leaving
});