2016-09-08 22 views
0

Ich arbeite an einer Java-Anwendung (JSP/Servlets), wo Benutzer einander Nachrichten senden können. Zu diesem Zweck benutze ich eine einzelne Tabelle in MySQL mit Feldern wie msg_id, , msg_content usw. Wenn Benutzer_A eine Nachricht an Benutzer_B sendet, möchte ich eine Benachrichtigung an Benutzer_B senden, die anzeigt, dass er eine neue Nachricht hat (etwas wie wie Facebook Benachrichtigungen funktionieren).Überprüfen Sie MySQL auf Updates und zeigen Sie Benachrichtigungen Alternativen

Ich habe nach einer Lösung gesucht und herausgefunden, dass ein möglicher Weg, um es durch AJAX-Polling zu implementieren ist. Das bedeutet, dass die Anwendung beispielsweise alle 60 Sekunden die oben genannte Tabelle auf neue Zeilen überprüft (Nachrichten an Benutzer_B) und wenn neue Nachrichten gefunden werden, wird die Nachricht dann geöffnet.

Allerdings sagen wir, dass 100 Benutzer verbunden sind. Dies bedeutet, dass für jeden einzelnen Benutzer alle 60 Sekunden eine Anfrage an die Datenbank gesendet wird, was ziemlich schlecht klingt.

Wird die Anwendung nicht wirklich "schwer", wenn etwas wie im obigen Beispiel passiert? Was sind andere Alternativen, um dies zu erreichen?

+0

Hat meine Antwort Ihnen irgendwie geholfen? Habt ihr Fragen? –

+0

Ich versuche ein Beispiel zu finden, wie dies mit WebSockets implementiert werden kann. Ich werde deine Antwort akzeptieren, sobald ich es tue. Hast du etwas im Sinn? Ich meine, ein Beispiel oder so etwas. – pirox22

+0

Schauen Sie sich meine Antwort an, ich habe einige gute Beispiele für die Implementierung beigefügt. –

Antwort

1

Für diesen Fall würde ich empfehlen, Sockets mit einigen Nachrichtenbroker zu verwenden, zum Beispiel RabbitMq, aber es gibt viele andere. Anstatt den Status wiederholt zu überprüfen, erstellen Sie Nachrichtenabfragen in Message Broker und Server genauso wie alle Clients über Sockets mit diesem Nachrichtenbroker verbunden sind. Wenn eine neue Nachricht auftritt, senden Sie sie an alle entsprechenden Nachrichtenabfragen. Entsprechende Clients, die mit entsprechenden Abfragen verbunden sind, erhalten die Nachricht sofort über den Socket.

Wenn ich mich nicht irre, können Sie für Web-Anwendungen Websocket verwenden, um eine Verbindung mit Ihrem Browser herzustellen. Das nutzt Facebook für seine Benachrichtigungen.

Für clientseitige (JavaScript) Implementierung und gute Erklärung, siehe this link. Es gibt auch einige serverseitige Beispiele, aber nicht für PHP (zB Node.js oder python)

Für Server-Seite in PHP auf this link können Sie vollständige PHP-Implementierung finden (aber nicht so gute Erklärung).

Verwandte Themen