一、DWR简介

Q:什么是DWR?
A:DWR(Direct Web Remoting)是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。

Q:DWR有什么优势?特点?
A:开发人员就可以在JavaScript里使用Java代码,就像它们是浏览器的本地代码(客户端代码)一样;运行在WEB上但是不需要浏览器插件。

Q:DWR需要些什么?
A: 1.运行在服务器端的servlet控制器(DwrServlet),它负责接收请求,调用相应业务逻辑进行处理,向客户端返回响应。
2.运行在浏览器端的JavaScript,它负责向服务器端发送请求,接收响应,动态更新页面。
二、DWR配置

1.准备工作。
首先要导入两个jar包(dwr.jar和commons-logging-1.1.1.jar,都已经整合到framework框架中)
其中dwr.jar可以在以下网址中下载
http://directwebremoting.org/...
commons-logging-1.1.1.jar可以在以下网址中下载
http://commons.apache.org/dow...

2.在框架中使用
1、XPlayer详解

       /**
         * pushMessage向客户端推送消息,第一个参数为消息类型自定义
         * 
         * @param params
         *            直接传送给前台的参数,第一个为消息类型
         * @return
         */
        XPlayer p = XChatEngine.getSingleton().findPlayerById(uniqueCode);
        //Boolean pushMessage(Object... params)
        p.pushMessage(XChatConfig.XSYS_MSG_C2C_TEXT,data,frameUser);

        //前台消息处理
        frame.xchat.RegisterMessage(st.XSYS_MSG_C2C_TEXT, function(data, frameUser) {
        //........消息处理...............
        }

        /**
         * doAction通知客户端消息操作 客户端注册消息 XCHAT_MSG_OPERATE_NOTIFICATION = 14;
         * 
         * @param params
         *            第一个参数为子消息
         * @return
         */
        XPlayer player = XChatEngine.getSingleton().findPlayerById(uniqueCode);
        success = player.doAction(XChatConfig.XSYS_MSG_EXECUTE_SCRIPT,data);
        //前台消息处理
        frame.xchat.RegisterMessage(st.XCHAT_MSG_OPERATE_NOTIFICATION, function(msg, data) {
                if (msg == st.XSYS_MSG_EXECUTE_SCRIPT) {
                    frame.util.GlobalEval(data);
                }
        });

更多框架功能

2、MessageService详解
mqttService:mqtt
XPlayerClient:dwr
该Service中主要有两个方法:
(1)sendMessage
(2)broadcastMessage

向指定用户发送一条消息
Parameters:
target // 可能是电话号码,可能是UUID,可能是电子邮件地址
content // 发送消息的具体内容以及协议
notify // 通知对方的方式方法,如:qq,email,mqtt
void com.web.framework.core.module.message.service.impl.MessageService.sendMessage(String target, Map<String, Object> content, String… notify) throws Exception

广播一条消息
Parameters:
groupName // 广播的名称(分组名称=topicName)
content // 发送消息的具体内容
notify // 通知对方的方式方法,如:qq,email,mqtt
void com.web.framework.core.module.message.service.impl.MessageService.broadcastMessage(String groupName, Map<String, Object> content, String… notify)


书写人生
65 声望3 粉丝