伟大的无文档dwr3

wr3 带给了我们什么?
很多东西。其中之一,我最喜欢的,也是最开始时选择从dwr2升级到dwr3的原因是ScriptSessionManager,这玩意儿有什么用呢?我最开始要用它是因为要做一个在线聊天的模块,必须要区分不同的用户,怎么区分?就是靠这个玩意儿加入了一个HttpSessionListener,然后在SessionCreated方法里边加入了如下代码:
Container container = ServerContextFactory.get().getContainer();
ScriptSessionManager manager = container
.getBean(ScriptSessionManager.class);
ScriptSessionListener listener = new ScriptSessionListener() {
public void sessionCreated(ScriptSessionEvent ev) {
HttpSession session = WebContextFactory.get().getSession();
ScriptSession scriptSession = ev.getSession();
MyAccountBean account = (MyAccountBean) session
.getAttribute(Configuration.CURRENT_ACCOUNT_KEY);
scriptSession.setAttribute(Configuration.CURRENT_USER_ID, account.getUser().getId());
System.err.println("E> put userId into scriptSession as " + account.getUser().getId());
}
public void sessionDestroyed(ScriptSessionEvent ev) {
}
};
manager.addScriptSessionListener (listener);

在每次有一个用户登录的时候,就加入一个ScriptSessionListener到ScriptSessionManager,这个Manager在有ScriptSession建立的时候就会调用Listener中的sessionCreated方法,该方法放入一个用户Id到ScriptSession里边,从而在需要的时候就拿来判断是哪个用户的ScriptSession。

那么? 在DWR3中应该怎么判断呢?
这确实是个问题,因为DWR3的文档是在是太少了,网上大多数资料都是DWR2.0的,然后敲上去那些代码之后,Eclipse又无情地划了条横线,尽管仍然能运行,但是那么一条横线比Warning还令人讨厌,每每还是把那些代码del掉,我要用一个DWR3的最新用法?可是怎么用呢?终于,翻遍了中文英文资料,查到了这么一个方法。
Browser.withPageFiltered(page, filter, new SendMessageThread(clientMsg));
这个方法可以对一部分Page开设一些线程,依靠这些线程就可以完成对客户端的“推送”。
那么怎样在这些线程里边访问ScriptSession呢?
其实很简单,不能直接访问我就传参数呗,而且还不用自己传。
一个一个来。
ScriptSessionFilter
该接口中有一个待实现的方法,public boolean match(ScriptSession session) ;你实现了该方法,就可以过滤掉你不想执行的页面ScriptSession。当然了,过滤的一句就是ScriptSession中userId。
SendMessageThread
这个东西更简单,当然了,是我写得比较简单。它实现了一个Runnable接口,主要负责推送消息。
由于该线程是由Browser.withPageFiltered派生出来的(不是该方法本身)。所以它应该是一个dwr线程,那么要访问这个线程里边的ScriptSession,只需要使用这个类即可,ScriptSessions。可以这样回调一个客户端函数:
ScriptSessions.addFunctionCall("appendMessage", message);
三天一个“推送”。不过还好,因为DWR3.0缺乏文档嘛。昨天晚上朋友生日,然后几个老朋友,maybe应该叫新朋友一起聚了聚餐,平时被学校的食堂饿惯了,都好久没看到这么有油的食物了,感觉很是饱餐了一顿,让人感觉最好的还是在一起谈天说地了,聊什么HTC放弃了WP7,全面支持Android啦,聊什么Android让手机市场同质化了啦,聊什么程序员月工资就三四千啦,聊什么去基金公司赚钱啦,聊“柜子”同学的最新风月啦好不开心。最后还一起绕着嘉定的校园转了大半圈,一路上还说到了有名的“保研路”问题,一路欢声笑语。回寝室不够尽兴,三国杀庆祝之,感觉有几个老朋友就是好啊,羞愧自己以前的思想多么幼稚。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值