我对使用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 });
}
请让我知道我做错了什么。任何帮助将不胜感激。
非常感谢你。
答案 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);
});
});