首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Java web应用的推送通知

Java web应用的推送通知
EN

Stack Overflow用户
提问于 2013-01-23 15:12:18
回答 7查看 34.8K关注 0票数 19

目前,我正在开发一个使用Spring 3.1和Hibernate 4的web应用程序。

根据要求,我想像Facebook一样,在JSP页面上实现推送通知。如果您有任何建议,请同时列出兼容的浏览器及其版本。

EN

回答 7

Stack Overflow用户

发布于 2013-02-04 00:09:46

如果您可以升级到JDK7或正在使用JDK7,我建议您使用Vert.x Vertx.io,在客户端使用Sockjs。Vert.x有一个完整的sockjs服务器实现,我将尝试提出一种实现的方法,其余的请参阅文档。

服务器实现可能如下所示

代码语言:javascript
复制
    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>);

在客户端,注册一个处理程序,比如加载文档

代码语言:javascript
复制
 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“

代码语言:javascript
复制
function subscribe(address) {
if (eb) {
  eb.registerHandler(address, function(msg, replyTo) {
  console.log("Reply recieved")
          });

}
}

完成所有这些设置后,您现在可以使用前面创建的事件总线将任何数据从服务器推送到此地址

代码语言:javascript
复制
eventBus.publish("AwesomeNotifications", new JsonObject(<some hashmap to serialize>))

希望这能有所帮助

票数 24
EN

Stack Overflow用户

发布于 2013-01-23 15:22:40

您可以使用HTMl5服务器-send选项。您可以在此处获取更多详细信息

服务器-发送选项:

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

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

Java servlet and server sent events

教程:

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

HTML5支持的浏览器:

http://fmbip.com/litmus

票数 13
EN

Stack Overflow用户

发布于 2013-02-05 16:51:19

我最近一直在调查这个问题。基于事件的方法是构建单页面web应用程序的一个很好的方法,但也可以用于多页面web应用程序。

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

  • ActiveMQ AJAX -在浏览器中直接从javascript发布和订阅JMS事件。这是非常基本的,比其他方法更简单,但是因为它的简单性,如果你a)已经使用了activemq,b)像没有太多的基于abstraction
  • Atmosphere事件的框架层,可以自动检测基于哪个are服务器和哪个浏览器当前正在使用的最佳通信机制。一个非常好的框架,它支持全面的browsers and web severs, even down to IE6。还有examples of using Atmosphere with spring MVC and Spring Integration.
  • Cometd -基于jetty/hightide的Bayeux协议的实现(自动协商最佳连接类型)。Jetty是第一个支持continuations的java was服务器,现在是最新的Servlet规范的一部分。Cometd将Jetty与JS客户端库打包在一起,用于自动检测到browser.
  • Vert.x的最佳连接机制-一个基于事件的服务器平台,您可以在其上构建。最近,当Vert.x的作者离开VMware时,围绕它有一些争议,但VMware保留了这个项目。现在看来,版本2将从Eclipse Foundation发布。看起来很有前途,但水平很低。不是那种你只是插入到现有的基于app.
  • HTML5 EventSource标准的java web向浏览器发送事件的方式。没有将事件发送回服务器的机制。这很有趣,但考虑到您需要实现IE6、IE7和IE8的后备,目前可能不是您的最佳选择。

最终,我认为对于问题的作者来说,集成到spring-mvc项目中,Atmosphere显然是最合适的。

编辑:打字错误

票数 9
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14474273

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档