【发布时间】:2015-02-10 05:17:08
【问题描述】:
我有一个我似乎无法解决的问题。我正在与远程系统进行某种集成,并且我的代码在 iframe 中,但我希望这对我来说并不重要:)。
我正在尝试从服务器向特定房间/客户端发送消息以开始会话。我做的第一件事是当用户登录时,我从客户端发出带有用户名的消息。
CLIENT.JS
conn.on('connect', function () {
conn.emit('session', { username: 'some_username' });
}, false);
在服务器端,我收到消息并将套接字加入房间。
SERVER.JS
socket.on('session', function(session) {
socket.join(session.username);
});
我有另一个模块通过 redis 与这个 server.js 脚本通信。所以我在 server.js 中还有两个事件
SERVER.JS
var userCreate = redis.createClient();
userCreate.subscribe("userCreate", "userCreate");
var userDestroy = redis.createClient();
userDestroy.subscribe("userDestroy", "userDestroy");
userCreate.on("message", function(channel, data) {
socket.to(JSON.parse(data).username).emit('beginSession', data);
});
userDestroy.on("message", function(channel, data) {
socket.to(JSON.parse(data).username).emit('endSession', data);
socket.leave(JSON.parse(data).username);
});
但是,当我尝试从服务器向客户端发送消息时,我会向所有人广播消息。我做错了什么?
【问题讨论】:
标签: javascript node.js sockets socket.io client-server