2012-03-28 9 views
3

Ich habe mir gevent-socketio angesehen und fragte mich, wie ich an einen bestimmten Benutzer senden soll. Sagen wir, ich möchte eine Nachricht an userX senden, wenn BenutzerY Daten übermittelt. Die Beispiele senden Nachrichten an alle Benutzer in einem Chatraum, können aber immer noch nicht herausfinden, wie sie an einen bestimmten Benutzer gesendet und von diesem Ereignis empfangen werden. Muss ich einen benutzerdefinierten Broadcast Mixin erstellen?So übertragen Sie ein Ereignis an einen bestimmten Benutzer mit Pyramid und socketio

Antwort

2

Wenn Sie einen speziellen Sender oder einen speziellen Raum implementieren möchten, müssen Sie Ihren eigenen Mixin implementieren. Ich habe gerade das Attribut 'session' zum Namespace- und Socket-Objekt hinzugefügt, auf dem Sie die gewünschten Informationen einstellen können (es ist ein Wörterbuch). Ich schlage vor, ein Ereignis zu haben, das den Spitznamen zum Beispiel auf self.session['nickname'] setzt, und dann eine Funktion ähnlich broadcast_event() (auf dem BroadcastMixin), die alle Sockets durchlaufen wird, überprüfen ihre Sitzung, um zu überprüfen, ob der Socket zu diesem bestimmten Benutzer gehört , und senden Sie das Paket, wenn dies der Fall ist.

Werfen Sie einen Blick auf the code. Es ist ziemlich einfach zu benutzen. Sie müssen nur die Beziehung Socket/Namespace verstehen.

+0

Danke Alexandre für das Schreiben des Beispiels. Ich werde es mir ansehen. Bisher war es wirklich einfach zu implementieren, danke für all die Arbeit, die Sie an diesem Projekt geleistet haben. – webjunkie