pushlet(QQ提示框)
Pushlet 实现服务端往客服端推送消息
系统页面弹出消息框,类似QQ提示框
1. java代码
package com.test.jbpm.common; import java.io.Serializable; import java.util.List; import com.test.jbpm.web.action.BaseAction; import nl.justobjects.pushlet.core.Dispatcher; import nl.justobjects.pushlet.core.Event; import nl.justobjects.pushlet.core.Session; import nl.justobjects.pushlet.core.SessionManager; public class NoticePushlet extends BaseAction implements Serializable{ // 指定用户id public void myUnicast(String user,String message) { //必须注册ID PL.userid="hao"; if (SessionManager.getInstance().hasSession(user)) { SessionManager.getInstance().getSessions(); Event event = Event.createDataEvent("/flowctrl/main"); event.setField("noticeKey", message);//内容不能使用中文 Dispatcher.getInstance().unicast(event, user); } else { //Event event = Event.createDataEvent("/jbpm_first/hao"); //event.setField("noticeKey", "The user:("+user+") not live!"); //Dispatcher.getInstance().unicast(event, this.getSession().getAttribute("code").toString()); //sDispatcher.getInstance().broadcast(event); // Session[] sessions = SessionManager.getInstance().getSessions(); // for (Session session : sessions) { // } } } public void pushletInterface(List<String> prplflNoticeList) { Session[] sessions = SessionManager.getInstance().getSessions(); if (sessions != null && sessions.length > 0) { for (Session session : sessions) { String sessionId = session.getId(); String comcode = sessionId.split("->")[0]; int listLength = 0; // for (PrplflNotice pn : prplflNoticeList) { // if (comcode.equals(pn.getComcode())) { // listLength = listLength + 1; // } // } if (listLength > 0) { String msg = "��" + comcode + "���� " + listLength + " ��4S���뼰ʱ���������Ϣ"; Event event = Event.createDataEvent("/flowctrl/main"); event.setField("noticeKey", msg); Dispatcher.getInstance().unicast(event, sessionId); } } } } public void myBroadcast() { Event event = Event.createDataEvent("/flowctrl/main"); � event.setField("noticeKey", "Broadcast msg"); Dispatcher.getInstance().broadcast(event); } }
2.jsp代码
需要引入ajax-pushlet-client.js
<script type="text/javascript">
// 消息提醒用js,注册监听
var usercode = '<%=session.getAttribute("code")%>';
var timestamp=new Date().getTime();
PL.userid=usercode;
//PL.userid=usercode+"->"+timestamp;
PL.webRoot="${pageContext.request.contextPath}/";
PL._init();
PL.joinListen('/flowctrl/main');
function onData(event) {
var info=event.get("noticeKey");
openDia(info);
}
function openDia(info) {
document.getElementById('messageInfo').innerHTML = info +'<BR><BR><a href="javascript:void(0);" onclick="deal()" target="page">点击处理(未处理完毕仍可点击以继续)</a>';
showDiv();
}
//消息提示使用
var divTop,divLeft,divWidth,divHeight,docHeight,docWidth,i = 0;
function showDiv(){
try{
divTop = parseInt(document.getElementById("dialog").style.top,10);
divLeft = parseInt(document.getElementById("dialog").style.left,10);
divHeight = parseInt(document.getElementById("dialog").offsetHeight,10);
divWidth = parseInt(document.getElementById("dialog").offsetWidth,10);
docWidth = document.body.clientWidth;
docHeight = document.body.clientHeight;
document.getElementById("dialog").style.top = parseInt(document.body.scrollTop,10) + docHeight - divHeight;
document.getElementById("dialog").style.left = parseInt(document.body.scrollLeft,10) + docWidth - divWidth;
document.getElementById("dialog").style.visibility="visible";
}
catch(e){}
}
function closeDiv()
{
document.getElementById('dialog').style.visibility='hidden';
}
</script>

浙公网安备 33010602011771号