最近對比了幾種消息推送的方案:javascript
xmpp(openfire)——對消息服務器的要求比較高,沒有找到合適的java實現方案;html
極光推送、百度推送——自動生成的id,很差綁定本地用戶,做爲公告類的消息推送能夠,但做爲本地用戶間的消息推送機制仍是不太合適;java
comet4j——能實現消息推送,可是每一個頁面保持鏈接的js對性能的消耗也厲害,部分代碼配置以下:web
jsp頁面:ajax
<script type="text/javascript" src="${ctx }/resources/js/comet4j.js"></script> <script type="text/javascript"> function init() { var kbDom1 = document.getElementById('kbb'); JS.Engine.on( { hello : function(kb) {//偵聽一個channel var strs = new Array(); //定義一數組 strs = kb.split(","); //字符分割 for (i = 0; i < strs.length; i++) { if (strs[i] == kbDom1.value && strs[i] != '') { document.getElementById('toubiao').style.display = ""; showUnReadMsgCount(); } } } }); JS.Engine.start('conn'); JS.Engine.on('start', function(cId, channelList, engine) { }); } init(); </script> <script> function showUnReadMsgCount(){ if($("#isLogin").val() === "true"){ $.ajax( { url : ctx + "/admin/getUnReadMsgCount.do", type : "post", dataType : "json", success : function(data) { var count = data[0]; if(count == 0){ return; } $("#unReadCount").html("<span></span><a href='"+ctx+"/admin/receiveList.do' style='font-weight:700;'>未讀消息<label>"+count+"</label></a>"); } }); } }; </script>
web.xml中配置json
<!-- comet4j start <listener> <listener-class>org.comet4j.core.CometAppListener</listener-class> </listener> <servlet> <display-name>CometServlet</display-name> <servlet-name>CometServlet</servlet-name> <servlet-class>org.comet4j.core.CometServlet</servlet-class> </servlet> <servlet-mapping> <servlet-name>CometServlet</servlet-name> <url-pattern>/conn</url-pattern> </servlet-mapping> <listener> <description>Comet4jMsgListener</description> <listener-class>com.tenchong.util.Comet4jMsgListener</listener-class> </listener> comet4j end -->