2017-12-29 8 views
0

Ich bin ein Publish/Subscribe-Mechanismus über WebSockets. Ich habe das websocket funktioniert, aber wie sende ich die Nachricht von userA an userB, userC und userD (das sind andere Benutzer, die das Pub/sub abonniert haben).Müssen Nachrichten an andere Benutzer senden, nicht den Absender, über Websocket

Ich benutze websocketsharp und ich habe die Liste der Sitzungen, die geöffnet sind, also habe ich versucht, SendTo zu verwenden, aber ich kann es nicht funktionieren.

Ich brauche nur einen Punkt in die richtige Richtung.

Übrigens, ich kann einfach von userA zum Server, vom Server zurück zu userA, aber ich kann nicht herausfinden, wie an userB, userC, userD weitergeleitet werden, die auch abonniert sind.

Hier ist ein kleiner Code-Schnipsel von dem, was ich zu tun habe versucht:

class DDPServer : WebSocketBehavior, IClientSession 
    { 
     private SessionInfo sessionInfo; 
     public static WebSocketSessionManager sessionQueue { get; set; } 
     // more stuff here 
    } 

sessionQueue alle Sitzungen zugeordnet ist.

So, jetzt habe ich alle Sitzungen. Die Anforderung wird von dem Socket-Server empfangen wird, geht durch das Pub/Sub-Mechanismus (der eine Liste der abonnierten Benutzer bereitstellt), und jetzt versuche ich, die Daten zurück wie mit etwas heraus zu senden:

DDPServer.sessionQueue.SendTo("test", "3d0f491cfb654dd4839337608b19f849"); 

wo 3d0f491cfb654dd4839337608b19f849 ist die Sitzungs-ID.

+0

senden Sie es an den Server und der Server sendet es erneut an den Client. – Gusman

+0

Ich kann es gut an den Server senden, ich kann es zurück an den sendenden Client senden, aber wie kann ich es an die anderen abonnierten Clients weiterleiten? – stevelacerda7

+0

Können Sie Code zur Klärung anzeigen? Ich bin mir nicht sicher, ob ich verstehe, was Ihr Problem ist, wenn Sie vom Server senden/empfangen können. – Mark

Antwort

0

WebSocketSessionManager verwaltet die offenen Verbindungen, daher konnte ich mit .SendTo ("String-Daten hier", "String-Session-ID hier") an jeden anderen Client senden.

Also, ich werde Benutzer abonnieren, speichern Sie den Kanal mit der Liste der abonnierten Benutzer in der Datenbank, ziehen Sie diese Benutzer heraus, suchen Sie die Sitzungen mit diesen Benutzern zugeordnet (falls vorhanden), dann führen Sie eine for-Schleife an Senden an jede Sitzung.

Verwandte Themen