SignalR - Nachricht Senden OnConnected

Ich habe experimentiert mit SignalR heute und Es ist wirklich ordentlich. Im Grunde, was ich erreichen wollte, ist die folgende:

Sobald ein Gerät verbunden, es sollte eine Nachricht senden zu der ersten. Wenn es mehr Geräte als 1 angeschlossen ich möchte zum senden von zwei Nachrichten. Einer für alle außer der Letzte verbundene client. Und eine Nachricht an nur der Letzte verbundene client.

Den code, den ich benutzt habe funktioniert perfekt, wenn ich ihn in einer benutzerdefinierten API-controller und im Grunde nennen die Aktion, aber das ist nicht das, was ich will.

Ich würde gerne um die Nachrichten zu senden, sobald das Gerät eine Verbindung innerhalb OnConnected ohne Interaktion mit dem Benutzer, aber wenn ich meinen code innerhalb der OnConnected überschreiben, Stoppt es zu arbeiten. Es sendet nicht auf die spezifischen Kunden mehr (zuerst angeschlossen und zuletzt verbunden).

Ich hoffe, jemand kann mir helfen, weil ich habe schlug meinen Kopf für ein paar Stunden jetzt.

    public override System.Threading.Tasks.Task OnConnected()
    {
        UserHandler.ConnectedIds.Add(Context.ConnectionId, UserHandler.ConnectedIds.Count + 1);

        int amountOfConnections = UserHandler.ConnectedIds.Count;
        var lastConnection = UserHandler.ConnectedIds.OrderBy(x => x.Value).LastOrDefault();
        var allExceptLast = UserHandler.ConnectedIds.Take(amountOfConnections - 1).Select(x => x.Key).ToList();

        if (amountOfConnections == 1)
        {
            Clients.Client(UserHandler.ConnectedIds.First().Key).hello("Send to only(also first) one");
        }
        else
        {
            Clients.Clients(allExceptLast).hello("Send to everyone except last");
            Clients.Client(lastConnection.Key).hello("Send to only the last one");
        }

        return base.OnConnected();
    }
InformationsquelleAutor Mittchel | 2015-05-20
Schreibe einen Kommentar