/**
* 向浏览器客户端推送消息
* @param userid 要推送的对象
* @param function
调用JS函数名(默认receiveMessage)
* @param all 是否推送所有人
* @param params
要推送的内容
*/
public static void pushMessage(final String userid, final String function, final boolean all, final Object... params) {
Browser.withAllSessionsFiltered(
new ScriptSessionFilter() {
public boolean match(ScriptSession
session) {
if (session.getAttribute("userid") ==
null){
return false;
}else
return all ?
true : (session.getAttribute("userid")).equals(userid);
}
},
new Runnable() {
private ScriptBuffer script = new
ScriptBuffer();
public void run() {
script.appendCall(StringUtils.isBlank(function) ?
"receiveMessage" : function,
params);
Collection<ScriptSession> sessions =
Browser
.getTargetSessions();
for (ScriptSession
scriptSession : sessions) {
scriptSession.addScript(script);
System.out.println("sendTime:
" + new Date().getTime() + "==>" +
scriptSession.getAttribute("userid"));
}
}
});
}
match方法判断Session是否匹配;
Browser.getTargetSessions();获取匹配的Session;
script.appendCall(StringUtils.isBlank(function) ? "receiveMessage" : function, params);//添加js函数及参数
scriptSession.addScript(script);添加推送
以上是个人理解,如有问题欢迎提出来纠正!
原文:http://www.cnblogs.com/hxbao/p/3607833.html