Notification push pour l'application Web Java [fermé]


Actuellement, je travaille sur une application Web qui utilise Spring 3.1 et Hibernate 4.

Selon l'exigence, je souhaite implémenter des notifications push comme le fait Facebook, sur une page JSP. Si vous avez des suggestions, veuillez également lister les navigateurs compatibles avec leurs versions.

Author: minopret, 0000-00-00

7 answers

Si vous pouvez mettre à niveau vers ou utilisez JDK 7, je suggère d'utiliser Vert.x Vertx.io , utilisez Sockjs côté client. Vert.x a une implémentation complète du serveur sockjs, je vais essayer de suggérer un moyen de l'implémenter, pour le reste, veuillez regarder les documents

L'implémentation du serveur pourrait être comme ceci

    Vertx vertx = Vertx.newVertx();
    EventBus eventBus = vertx.eventBus()
    HttpServer server = vertx.createHttpServer();
    JsonArray permitted = new JsonArray();
    permitted.add(new JsonObject());
    SockJSServer sockJSServer = new DefaultSockJSServer(vertx, server);
    sockJSServer.bridge(new JsonObject().putString("prefix", "/pusher"), permitted, permitted);
    server.listen(<some port>);

, côté client, enregistrer un gestionnaire comme sur le document de charge

 function () {
if (!eb) {
  eb = new vertx.EventBus("http://<your_host>:<your_port>/pusher");

  eb.onopen = function() {
   console.log("connected")
  };

  eb.onclose = function() {
    console.log("Not connected");
    eb = null;
  };
}

}

Vous pouvez ensuite enregistrer un gestionnaire à n'importe quelle adresse - adresse ici peut être quoi que ce soit, supposons que ce soit "AwesomeNotifications"

function subscribe(address) {
if (eb) {
  eb.registerHandler(address, function(msg, replyTo) {
  console.log("Reply recieved")
          });

}
}

Une fois que vous avez tout configuré, vous pouvez maintenant envoyer toutes les données du serveur à cette adresse en utilisant le bus d'événements que nous avons créé précédemment

eventBus.publish("AwesomeNotifications", new JsonObject(<some hashmap to serialize>))

J'espère que cela aide

 23
Author: winash, 2013-02-03 16:09:45

Vous pouvez utiliser HTMl5 serveur l'option envoyer. Ici vous pouvez obtenir plus de détails

Option d'envoi du serveur:

Http://www.w3schools.com/html/html5_serversentevents.asp

Java servelt serveur envoyer :

Servlet Java et événements envoyés par le serveur

Tutoriel :

Http://peaktechie.blogspot.in/2012/04/small-tutorial-on-html5-server-sent.html

Navigateurs pris en charge par HTML5 :

Http://fmbip.com/litmus

 13
Author: SANN3, 2017-05-23 11:46:37

J'ai étudié cela récemment. Une approche basée sur les événements est un excellent moyen de structurer les applications Web d'une seule page, mais peut également être utilisée dans les applications Web multipages.

Il y a plusieurs façons de le faire:

  • ActiveMQ AJAX - publiez et abonnez-vous aux événements JMS directement à partir de javascript dans le navigateur. C'est assez basique, avec moins de cloches et de sifflets que les autres approches, mais en raison de sa simplicité, pourrait être une bonne base pour commencer si vous avez) déjà utilisez activemq, b) comme ne pas avoir trop de couches d'abstraction
  • Atmosphère - Cadre basé sur les événements, peut détecter automatiquement le meilleur mécanisme de communication basé sur quel serveur Web et quel broswer sont actuellement utilisés. Un cadre assez agréable, qui prend en charge une diffusion complète de navigateurs et serveurs Web, même jusqu'à IE6. Et il y a des exemples d'utilisation d'Atmosphere avec spring MVC et Spring Integration.
  • Cometd - Une implémentation de le protocole Bayeux (pour négocier automatiquement le meilleur type de connexion) basé sur jetty/hightide. Jetty a été le premier serveur Web java à prendre en charge les continuations, faisant maintenant partie de la dernière spécification de Servlet. Cometd prend Jetty et l'enveloppe avec les bibliothèques clientes JS pour la détection automatique du meilleur mécanisme de connexion au navigateur.
  • Vert.x - Une plate-forme serveur basée sur les événements que vous pouvez construire sur le dessus. Il y a eu une certaine controverse autour de Vert.x récemment quand son auteur a quitté VMware, mais VMware a conservé le projet. Il semble maintenant que la version 2 sera publiée par la Fondation Eclipse. Semble très prometteur, mais assez faible niveau. Pas le genre de chose que vous venez de brancher sur une application Web java existante.
  • HTML5 EventSource - Méthode standard d'envoi d'événements au navigateur. Aucun mécanisme pour renvoyer des événements au serveur. C'est intéressant, mais étant donné que vous devez implémenter un repli pour IE6, IE7 et IE8, ce n'est peut-être pas votre meilleur choix, pour maintenant.

Ulimately, je pense que pour l'auteur de la question, l'intégration à un spring-mvc projet, l'Atmosphère est clairement le meilleur ajustement.

Modifier: fautes de frappe

 9
Author: David Roussel, 2013-02-05 08:59:14

J'ai utilisé Atmosphère pour ce faire. Il utilise WebSockets s'ils sont pris en charge par le navigateur, et retombe bien à l'interrogation quand ce n'est pas le cas. Ils ont aussi un joli plugin jQuery pour rendre la vie simple.

 7
Author: CodeChimp, 2013-01-23 16:58:32

, je vous suggère d'aller avec le temps d'Interrogation aka Comet. Je l'ai utilisé pour lancer des nombres aléatoires au client. Vous pouvez également vous référer à cette question.

 1
Author: Sorter, 2017-05-23 12:10:25

Ma suggestion serait d'utiliser soit un middleware basé sur publish-subscribe MQTT ou un protocole XMPP. Si vous prévoyez d'envoyer de petits morceaux de messages, il sera plus approprié d'utiliser MQTT car c'est le moyen le plus léger d'aller. Il a beaucoup de bibliothèques clientes, y compris javascript et très facile à développer et à gérer.

 0
Author: Alpay, 2013-02-05 09:07:18

Nous utilisons XMPP depuis longtemps pour prendre en charge les notifications push, mais maintenons un serveurEjabber (ou wh

 0
Author: ,