最近對比了幾種消息推送的方案:
xmpp(openfire)——對消息服務器的要求比較高,沒有找到合適的java實現方案;
極光推送、百度推送——自動生成的id,不好綁定本地用戶,作為公告類的消息推送可以,但作為本地用戶間的消息推送機制還是不太合適;
comet4j——能實現消息推送,但是每個頁面保持連接的js對性能的消耗也厲害,部分代碼配置如下:
jsp頁面:
<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中配置
<!-- 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 -->
