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. node.js获取命令参数

    假如有个加密程序test.js,不想每次加密的时候都修改代码,直接通过控制台输入参数 var createHash = require('sha.js') var sha1 = createHash( ...

  2. 关于IQueryable和IEnumerable

    园里对这两个已经有很多文章作了深入的介绍,我总结些,当成笔记用. 一.具体判断用哪个上,如果是运行在本地内存中的,用IEnumerable,枚举该对象时,会立即反应查询结果. 如果是远程数据源,比如数 ...

  3. vs.net打包(自动检测环境并安装.net framwork)

    vs.net打包程序或者制作安装程序时自动检测环境并安装.netframwork的设置方法之前我看过文档也做过,但是过一段时间又忘了,现在终于又找到方法了,还是把这个方法写下来吧,方便自己也方便大家将 ...

  4. 2729:Blah数集

    2729:Blah数集 查看 提交 统计 提问 总时间限制: 3000ms 内存限制: 65536kB 描述 大数学家高斯小时候偶然间发现一种有趣的自然数集合Blah,对于以a为基的集合Ba定义如下: ...

  5. PHP性能检测与优化—XHProf 数据阅读

    PHP性能检测与优化—XHProf 数据阅读 一.      效果如下 请求总揽 函数调用情况 二.      参数含义 Inclusive Time              包括子函数所有执行时间 ...

  6. 【Linux】TFTP & NFS 服务器配置

    Why?--交叉开发 一.交叉开发模型 宿主机(PC)------ 网络.串口.USB.JTAG ------ 目标机(ARM系统) PC机作为TFTP & NFS 服务器,目标机从网络下载软 ...

  7. jquery简介(一)

    摘要:简要介绍jquery的起源,以及为什么需要使用jquery. jquery的优点 jquery体量小,加载速度快,其本身具有的功能使JavaScript应用程序开发人员的工作变得分外轻松.其中最 ...

  8. HTML 5入门知识(四)

    表单的作用 表单不是表格,既不用来显示数据,也不用来布局网页.表单提供一个界面,一个入口,便于用户把数据提交给后台程序进行处理. 表单的数据传递方式method属性 表单的method属性用于指定在数 ...

  9. 网络防火墙之iptables的前世今生和归宿

    任何事物都有一个从无到有,再归于无的过程.是的,我这里用了一个绝对词:任何. 防火墙 在计算机领域中,防火墙(英文:Firewall)是一项协助确保信息安全的设备,会依照特定的规则,允许或是限制传输的 ...

  10. 自动驾驶self driving知识点mark

    C++, algorithm, RTOS,TX2, CAN, 标准, car model,