2016-03-29 12 views
0

Ich habe einen einfachen Chat mit Twilio IP-Messaging-Beispiel als Ausgangspunkt geschrieben. Die Idee ist, private Kanäle zwischen verschiedenen Kunden und Administratoren zu haben. Jeder Client hat einen separaten privaten Kanal mit Admin. Der Administrator kann auswählen, welcher Kanal mit einem bestimmten Client geöffnet/abonniert werden soll.Twilio ip messaging, wie man sich vom Kanal abmeldet

Das Problem, mit dem ich jetzt konfrontiert bin, ist, dass ich den abonnierten Kanal nicht abbestellen kann.

Hier ist der Link als Admin, Client (test1) und Client (Test2) anmelden: http://test.verbery.com/

Schritte, das Problem zu reproduzieren:

  1. Klicken Sie auf "Admin (admin1)" anmelden as admin
  2. Klicken Sie auf der neu geöffneten Admin-Chat-Seite auf den Kanal "[email protected]" auf der linken Seite, um den Kanal zu abonnieren und Nachrichten für diesen Kanal zu empfangen.
  3. Klicken Sie auf der Hauptseite auf "Client (test1)", um sich als Client anzumelden und einem Channel [email protected] als Client beizutreten.
  4. Senden Sie eine Nachricht von admin an Client (test1) und von Client (test1) an admin.
  5. Klicken Sie im Admin-Chat auf den Kanal [email protected], um diesen neuen Kanal zu abonnieren und mit einem anderen Kunden zu chatten (test2); Melden Sie sich als Client an (test2) und chatten Sie mit admin.
  6. Das Problem ist jetzt: Sie erhalten immer noch Nachrichten von [email protected] - versuchen Sie, Nachrichten als [email protected] Client zu senden. Wenn Sie Kanal [email protected] abonniert haben, haben Sie nicht unsubscribed von [email protected]

Technische Daten: auf einen Kanal abonnieren ich ein Ereignis verwendet „onMessageAdded“, um die eingehenden Nachrichten zu hören für diesen Kanal:

// Listen for new messages sent to the channel 
personalChannel.on('messageAdded', function(message) { 
    printMessage(message.author, message.body); 
}); 

aus den Nachrichten austragen ich unbind('onMessageAdded') und off('onMessageAdded') habe versucht, aber es funktioniert nicht, js Konsole sagt: unbind (oder aus) nicht eine Funktion ist.

Irgendwelche Ideen, wie Sie sich vom Kanal abmelden?

Vielen Dank im Voraus, Dmitry

+1

Ich denke, es ist 'personalChannel.leave()' –

Antwort

3

Twilio Entwickler Evangelist hier.

Bob Schwamm hat Recht, Sie müssen leave()on the channel aufrufen, um es richtig zu verlassen.

Wenn Sie mit dem Kanal verbunden bleiben möchten, aber keine eingehenden Ereignisse mehr abhören möchten, können Sie den Hörer losbinden. Sie würden das tatsächlich mit removeListener statt off oder unbind tun. Dies folgt der Node.js EventEmitter API.

personalChannel.removeListener("messageAdded"); 

Lassen Sie mich wissen, ob das überhaupt hilft.

1
personalChannel.on('memberLeft', function(member) { 
    printMessage(member.identity + 'has left the channel.'); 
}); 

So etwas wie das?

+0

Vielen Dank für den Versuch zu helfen! Das wird nach Ereignissen abhören, die ausgelöst werden, wenn ein anderes Mitglied sich vom Kanal abmeldet, anstatt das betreffende Mitglied abzubestellen. – philnash

1

Wenn Sie nicht verlassen oder abmelden Kanal möchten, können Sie dies alles Ereignis im Kanal für remove tun:

activeChannel.removeAllListeners(); 

Ich tue dies, wenn ich zwischen den Kanälen wechseln.