伟大的无文档dwr3

来源:互联网 发布:好吃小零食知乎 编辑:程序博客网 时间:2024/05/13 20:05
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让手机市场同质化了啦,聊什么程序员月工资就三四千啦,聊什么去基金公司赚钱啦,聊“柜子”同学的最新风月啦好不开心。最后还一起绕着嘉定的校园转了大半圈,一路上还说到了有名的“保研路”问题,一路欢声笑语。回寝室不够尽兴,三国杀庆祝之,感觉有几个老朋友就是好啊,羞愧自己以前的思想多么幼稚。
原创粉丝点击