2017-03-04 2 views
0

Ich baue tatsächlich eine Chat-Anwendung, die aktuelle Benutzer zeigen muss, habe ich eine Spalte 'IsOnline' in db, deren Wert wechselt zwischen 1 und 0 als Benutzer an- oder abmeldet. Ich brauche eine Funktion, die api alle 15 Sekunden aufruft, um die aktuellsten Nutzer zu erreichen, die gerade online sind. Da ich Entity-Framework verwende, das Signalr und SQL-Abhängigkeit nicht unterstützt, habe ich beschlossen, diesen Weg zu gehen. Wie kann ich eine Methode haben, die alle 15 Sekunden in einem separaten Thread ausgeführt wird, um meine anderen Crud-Operationen nicht zu stören, solange ich Benutzer in Sitzung habe.Timer-Funktion für Chat-Anwendung

Antwort

1

Abruf nach 15 Sekunden ist keine gute Lösung, besonders wenn Ihr Anruf auf DB ist. Denken Sie über die Latenz bei diesem Ansatz nach. Ich denke, du musst nach einem anderen Ansatz suchen, anstatt db nach 15 Sekunden aufzurufen.

Wenn Sie online/offline überprüfen möchten, behalten Sie den Status im Speicher bei, anstatt in Db zu persistieren (nach 1 Stunde oder 2 Stunden bestehen bleiben, wenn Sie in DB behalten möchten).

+0

Unterschiedlicher Ansatz? wäre hilfreich, wenn Sie mich hier in eine Richtung weisen. –

1

Speicherstatus im Speicher, z. B. in memcached oder redis. Lassen Sie den Client alle 15 Sekunden eine Anfrage stellen. Der Online-Status ist vorübergehend, er muss nicht in der DB gespeichert werden.

Es ist schwierig, ausführlich zu beraten, da Sie die Architektur Ihrer App nicht beschrieben haben.

Im Allgemeinen ist eine effiziente Implementierung von Anwesenheitsmeldungen schwierig. Es kann einfacher sein, etwas von der Stange zu nehmen, anstatt es selbst zu entwickeln.

Verwandte Themen