为Java Web应用程序推送通知[关闭](Push notification for Java w

2019-07-18 13:33发布

目前,我正在上使用了Spring 3.1和Hibernate 4 web应用程序。

按要求,我想实现推送通知像Facebook那样,在JSP页面上。 如果您有任何建议,那么请还与它们的版本列出兼容的浏览器。

Answer 1:

如果你可以升级到或正在使用JDK 7,我建议使用Vert.x Vertx.io ,使用Sockjs在客户端。 Vert.x有一个完整的sockjs服务器实现,我会尽力提出一个方法来实现这一点,其余请看文档

服务器实现可以是这样的

    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>);

在客户端,注册一个处理程序,像这样的文件加载

 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;
  };
}

}

然后,您可以注册一个处理程序,任何地址 - 在这里讨论可以是任何东西,认为它是“AwesomeNotifications”

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

}
}

一旦你这一切成立,你现在可以从服务器中使用我们先前创建的事件总线将任何数据到这个地址

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

希望这可以帮助



Answer 2:

您可以使用HTML5服务器发送选项。 在这里,您可以得到更多的细节

服务器发送选项:

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

Java的的servelt用于服务器发送:

Java Servlet与服务器发送事件

教程:

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

HTML5支持的浏览器:

http://fmbip.com/litmus



Answer 3:

我一直在寻找到这家最近。 基于事件的做法是一个伟大的WASY构建单个页面的Web应用程序,但能在多的webapps也可以使用。

有许多方法可以做到这一点:

  • ActiveMQ的AJAX -发布和在浏览器中直接从JavaScript订阅JMS事件。 这是很基本的,以较少花俏比其他方法,但由于它的简单,可能是一个很好的基础入手,如果你一)已经使用的ActiveMQ,B),如没有抽象的层次过多
  • 大气 -基于事件的框架,可以自动检测此基础上的网络服务器和broswer当前正在使用的最好的沟通机制。 一个相当不错的框架,它支持的全面蔓延浏览器和Web西弗斯,甚至下降到IE6 。 并有使用氛围,Spring MVC和Spring集成的例子 。
  • 的cometd -贝叶协议的实现(自动协商最佳连接型)的基础上码头/ hightide。 码头是第一个Java Web服务器支持的延续,现在最新的Servlet规范的一部分。 的cometd采取Jetty和与最佳的连接机制,以浏览器的自动检测JS客户端库包装起来。
  • Vert.x -一个基于事件的服务器平台,你可以建立在顶部。 当它的作者留下的VMware,但是VMware保留该项目目前已经有Vert.x一些争议最近。 它现在看起来像第2版将会从Eclipse Foundation发布。 看起来非常有前途的,但相当低的水平。 不是那种事情,你只需将其插入到现有的Java Web应用程序。
  • HTML5的EventSource -将事件发送到浏览器的基于标准的方式。 没有机制来发送事件回服务器。 这很有趣,但由于需要implment回退为IE6,IE7和IE8,它可能不是你的最佳选择,现在是这样。

Ulimately,我认为对于笔者的问题,整合到一个弹簧MVC项目,气氛显然是最合适的。

编辑:错别字



Answer 4:

我用大气来做到这一点。 它使用的WebSockets如果它们被浏览器支持,并很好地回落到轮询时没有。 他们也有一个很好的jQuery插件,让生活简单。



Answer 5:

我建议你去与长轮询又名Comet 。 我用它来随机数抛出给客户端。 您也可以参考这个问题。



Answer 6:

我的建议是为使用发布-订阅基于MQTT中间件或XMPP协议。 如果您计划发送消息的小块,那么这将是最合适的使用MQTT因为它是最轻量级的路要走。 它有大量的客户端库包括JavaScript,很容易开发和管理。



Answer 7:

我们已经使用XMPP很长一段时间来支持推送通知,但十个分量的Ejabber服务器(或其他)是非常难治。

此外,actualy我们已经搬到socket.io有客户端和服务器实现,但你必须到十个分量服务器的NodeJS并开始与JS玩。

我还测试了王菲在一个项目中,并完全适用于Ruby的enviroments。

但在最后,我认为更好的解决方案是使用,你可以在你的服务器(Java)的嵌入而忘记其他TECNOLOGIES图书馆,我觉得气氛是客户端和服务器也是一个不错的解决方案。



文章来源: Push notification for Java web app [closed]