【发布时间】:2017-12-23 17:18:43
【问题描述】:
我是节点和套接字 io 的新手。我正在尝试为我自己的几个应用程序实现一个实时通知系统。所以,使用node、express和socket io,代码如下:
服务器端代码:
io.on('connection', function (socket) {
socket.on('subscribe', function(room) {
socket.join(room);
});
socket.on('unsubscribe', function(room) {
socket.leave(room);
});
});
客户端代码:
var sio = io.connect('http://localhost:9000');
var ch1 = sio.emit('subscribe', 'channel1');
ch1.on('log', function (data) {
console.log('channel1: ', data);
});
var ch2 = sio.emit('subscribe', 'channel2');
ch2.on('log', function (data) {
console.log('channel2: ', data);
});
例如,我正在从路线(快递)触发/发出事件:
app.get('/', function(req, res) {
var data1 = {
channel: 'channel1',
evennt: 'log',
message: 'Hello from channel1...'
};
io.to(data1.channel).emit(data1.event, data1);
});
当我到达路线时,io.to(data1.channel).emit(data1.event, data1); 正在工作,但它会将数据发送到两个房间/通道,但我希望仅在 ch1 中获取数据,因为 data1.channel 包含 channel1 所以我期望以下处理程序将接收数据:
ch1.on('log', function (data) {
console.log('channel1: ', data);
});
请注意,两个频道都有相同的log 事件。我在正确的轨道上吗。有可能吗?
【问题讨论】:
-
你在
data1的声明中打错了channel。 -
这是一个错字,但它也不起作用。