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>

pushlet(QQ提示框)的更多相关文章

  1. qt之透明提示框(模拟qq) (非常漂亮)

    Qt实现类似QQ的登录失败的提示框,主要涉及窗口透明并添加关闭按钮,以及图标和信息的显示等. 直接上代码: #include "error_widget.h" ErrorWidge ...

  2. wpf实现仿qq消息提示框

    原文:wpf实现仿qq消息提示框 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/huangli321456/article/details/5052 ...

  3. android标题栏上面弹出提示框(二) PopupWindow实现,带动画效果

    需求:上次用TextView写了一个从标题栏下面弹出的提示框.android标题栏下面弹出提示框(一) TextView实现,带动画效果,  总在找事情做的产品经理又提出了奇葩的需求.之前在通知栏显示 ...

  4. android标题栏下面弹出提示框(一) TextView实现,带动画效果

    产品经理用的是ios手机,于是android就走上了模仿的道路.做这个东西也走了一些弯路,写一篇博客放在这里,以后自己也可用参考,也方便别人学习. 弯路: 1.刚开始本来用PopupWindow去实现 ...

  5. html+css创建提示框

    看到下面的效果了吗? 本来我们站点是用下面的图片做的背景, 但是后期当更改完框中的提示内容,并且更新内容较多的时候,发现内容溢出了,如下图: 但是背景图片不能自动拉伸,还得重新做一张背景图,这样就导致 ...

  6. 【转】IOS学习笔记29—提示框第三方库之MBProgressHUD

    原文网址:http://blog.csdn.net/ryantang03/article/details/7877120 MBProgressHUD是一个开源项目,实现了很多种样式的提示框,使用上简单 ...

  7. 利用 css 制作简单的提示框

    在网页开发中,为了提高用户体验,经常会用到一些提示框来引导用户,这里分享下一些简单的提示框的制作 1.首先类似一个长方形右上角一个关闭按钮 这里用到的主要是一些定位的知识,运用relative和abs ...

  8. 关于.NET前后台提示框的那点事

    前言 关于提示框,或多或少都用到过,提示框常见方式两种:js原生alert() 和 div模拟弹层:下面以一个常见的需求业务场景来展现提示框的那点事: 正文内容 客户:需求方: 小白:实现方(全权负责 ...

  9. Qt之等待提示框三(QLabel进行多图片切换)

    之前分享过的等待提示框有用QMovie播放gif图片实现的,也有纯代码实现的,今天再次分享另一种实现方式,如题目所示:QLabel进行图片的切换!     进行用户登录的时候,往往都需要后台线程进行用 ...

随机推荐

  1. django细节

    1.处理请求 1.1  /add/?a=4&b=5 这样GET方法进行[获取参数] from django.shortcuts import render from django.http i ...

  2. 设置session超时的三种方式

    设置session超时的三种方式 1. 在容器中设置:如在tomcat-7\conf\web.xml中设置 Tomcat默认session超时时间为30分钟,可以根据需要修改,负数或0为不限制sess ...

  3. idea 正则全局替换文件文本

    上一遍写到了log4j2分层输出日志的内容,但因为项目原先采用的log4j,现使用log4j2,需将原有log4j的代码进行替换,以前的代码类似如下: private static final Log ...

  4. SQL Server迭代求和

    drop table t_geovindu create table t_geovindu ( xid int IDENTITY (1, 1), price money, DebitCredit VA ...

  5. P2085 最小函数值(minval)

    题目描述 有n个函数,分别为F1,F2,...,Fn.定义Fi(x)=Aix^2+Bix+Ci (x∈N*).给定这些Ai.Bi和Ci,请求出所有函数的所有函数值中最小的m个(如有重复的要输出多个). ...

  6. mockito 初识

    转载:http://blog.csdn.net/zhoudaxia/article/details/33056093 在平时的开发工作中,经常会碰到开发进度不一致,导致你要调用的接口还没好,此时又需要 ...

  7. C# WinForm 程序免安装 .NET Framework(XP/win7/win10环境运行)

    前文 首先感谢群里的大神宇内流云 提供的anyexec for windows版本. 经过本人搭建虚拟机在xp环境 使用anyexec运行winfrom程序后,测试通过,如下是用的xp运行winfro ...

  8. 在Eclipse中安装JSHint插件

    离线安装 1.下载插件包 http://download.eclipsesource.com/~rsternberg/jshint-eclipse-0.9.8.20130728-0004-b94b44 ...

  9. C# 64位win7下DllImport LoadLibrary函数失败 z

    [DllImport["kernel32.dll"]] static extern IntPtr LoadLibrary(string lpFileName); public vo ...

  10. The Tao to Excellent 2

    就算自己现在的技术水平很菜,就算自己现在写的代码还是很烂,但我们还是要一直坚持在最前线,一直向上,也许,在前方,就有不一样的风景在等着我们. 因为我深深明白到一件事:人之所以选择混吃等死,是因为他们根 ...