node.js动态聊天室

时间:2014-03-18 11:33:40

标签: node.js socket.io chat

我对使用node.js相对较新,我一直在寻找,但我还没有成功实现socket.join

我有一个聊天室,我希望在两个用户之间私下设置,类似于私人消息。

我希望在用户之间建立动态聊天室。我现在遇到的问题是消息仍然被广播到连接到服务器的所有客户端。

这是我在服务器上的内容

server.js

io.sockets.on( 'connection', function( socket ) {

    var unique_room = "";

    socket.on('join', function(room) {
        socket.join(room);
        unique_room = room;
        console.log("User Joined the room: "+room);
    });

    socket.on('message', function (data) {
        io.sockets.in(unique_room).emit('message', data.message);
    });

});

server.listen(1337);

client.js

var socket = io.connect( 'http://localhost:1337' );

socket.on('connect', function() {
     socket.emit('join', 'dddsdjkfh1123'); //chat room id unique to two users
});

socket.on( 'message', function( data ) {
     $("#chat" ).html(data.user + ":" + data.message);
});

//Form js
function sendpm(room,message,name) { 
     socket.emit( 'message', { room: room, message: message, name: name });
}

请让我知道我做错了什么。任何帮助将不胜感激。

非常感谢你。

1 个答案:

答案 0 :(得分:1)

当您发送邮件时,您应该从客户端发出一些房间ID,并获取该房间ID以仅向该房间中的该客户发送消息。

尝试在server.js中执行此操作:

io.sockets.on( 'connection', function( socket ) {

socket.on('join', function(room) {
    socket.join(room);
    socket.room = room;
    console.log("User Joined the room: "+socket.room);
});

socket.on('message', function (data) {
    io.sockets.in(data.room).emit('message', data.message);
});

});