目前我正在开发一个使用Spring 3.1和Hibernate 4的Web应用程序。
按照要求,我想在JSP页面上实现像Facebook一样的推送通知。如果您有任何建议,请列出兼容的浏览器及其版本。
目前我正在开发一个使用Spring 3.1和Hibernate 4的Web应用程序。
按照要求,我想在JSP页面上实现像Facebook一样的推送通知。如果您有任何建议,请列出兼容的浏览器及其版本。
如果您可以升级到JDK 7或正在使用JDK 7,我建议使用Vert.xVertx.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>))
希望这能帮到您
http://www.w3schools.com/html/html5_serversentevents.asp
用于服务器发送的Java servelt:
教程:
http://peaktechie.blogspot.in/2012/04/small-tutorial-on-html5-server-sent.html
支持HTML5的浏览器:
我认为对于提问者来说,将Atmosphere集成到spring-mvc项目中是最合适的选择。
编辑:修正了拼写错误。
我使用了Atmosphere工具来实现这个功能。它会优先使用WebSockets协议与浏览器进行通信,当不支持时则会智能的切换到轮询方式。此外,他们还提供了方便易用的jQuery插件。
我的建议是使用基于发布-订阅的MQTT中间件或XMPP协议。如果您计划发送小块消息,则最适合使用MQTT,因为它是最轻量级的方式。它有很多客户端库,包括JavaScript,并且非常易于开发和管理。
我们长期使用XMPP来支持推送通知,但是维护Ejabber服务器(或其他)非常困难。
此外,我们现在已经转向socket.io,它具有客户端和服务器实现,但您必须维护nodejs服务器并开始使用js。
我还在一个项目中测试了faye,在Ruby环境中完美运行。
但最终,我认为更好的解决方案是使用可以嵌入到您的服务器(Java)中并忘记其他技术的库,我认为Atmosphere也是一个很好的解决方案,同时具有客户端和服务器。