Ich bin neu zu Knoten und Socket io. Ich versuche, ein Echtzeit-Benachrichtigungssystem für einige meiner eigenen Apps zu implementieren. Also, mit Knoten, Express- und Buchse io, wird der Code unten angegeben:Die socket.io sendet an alle Räume anstelle der angegebenen
Server Side-Code:
io.on('connection', function (socket) {
socket.on('subscribe', function(room) {
socket.join(room);
});
socket.on('unsubscribe', function(room) {
socket.leave(room);
});
});
Client Side-Code:
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);
});
Ich bin Brennen/Emittieren der Veranstaltung von einer Route (Express) zum Beispiel:
app.get('/', function(req, res) {
var data1 = {
channel: 'channel1',
evennt: 'log',
message: 'Hello from channel1...'
};
io.to(data1.channel).emit(data1.event, data1);
});
Wenn ich die Strecke bin schlagen, ist die io.to(data1.channel).emit(data1.event, data1);
Arbeit ing aber die Daten auf beide Zimmer/Kanäle zu senden, aber ich hatte erwartet, um die Daten zu erhalten, nur in ch1
weil data1.channel
enthält channel1
so bekam ich die folgende Prozedur erwartet die Daten erhalten:
ch1.on('log', function (data) {
console.log('channel1: ', data);
});
Beachten Sie, dass beide Kanäle habe dasselbe log
Ereignis. Bin ich auf dem richtigen Weg? Ist es überhaupt möglich?
Sie vertippt 'channel' in der Erklärung von' data1'. – robertklep
Es war ein Tippfehler hier, aber es funktioniert auch nicht. –