Java Web 应用程序的推送通知 [已关闭]

2022-09-02 11:27:18

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

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


答案 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>))

希望这有帮助


答案 2

您可以使用 HTMl5 服务器发送选项。在这里,您可以获取更多详细信息

服务器发送选项:

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

Java servelt for server-send :

Java servlet 和服务器发送事件

教程:

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

HTML5 支持的浏览器 :

http://fmbip.com/litmus