DWR服务器推技术(实现消息实时推送功能)
来源:互联网 发布:服务器主流软件 编辑:程序博客网 时间:2024/05/01 14:49
DWR是一个用于改善web页面与Java类交互的远程服务器端Ajax开源框架,可以帮助开发人员开发包含AJAX技术的网站。它可以允许在浏览器里的代码使用运行在WEB服务器上的JAVA函数,就像它就在浏览器里一样。
它包含两个主要的部分:允许JavaScript从WEB服务器上一个遵循了AJAX原则的Servlet中获取数据。另外一方面一个JavaScript库可以帮助网站开发人员轻松地利用获取的数据来动态改变网页的内容。
现有模式:
参考现有聊天工具,当我们有消息时,聊天工具的图标会跳动,提醒我们有未读消息可以查看,这种功能在C/S模式下很容易实现,但是如果要在B/S模式如何来实现呢。
我们的肯定会想到在客服端调用ajax在后台不断的查询服务器.看是否有关于自己的消息,如果有则查询返回。这种做法肯定会大量的占用系统的资源,是一种效率比较低的做法,不可取。
而现在DWR的反转AJAX功能,允许我们从服务器端来控制客服端,不需要客户端请求,服务器就可以自动把消息发给指定的客户端。
应用场景:
使用本技术,可以实现即使聊天,消息实时推送,实时动态网页等功能。
具体使用:
下面我们就用一个简单的例子来介绍一下dwr服务器推技术的实现。(本实例demo以及使用到的相关资料DEMO已上传至我的资源,仅供参考)
1.新建一个web工程,导入dwr.jar
2.在web.xml文件中加入dwr配置,具体配置内容如下:
<!-- DWR服务器推技术 -->
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>
org.directwebremoting.servlet.DwrServlet
</servlet-class>
<init-param>
<description>调试DWR,发布系统时应将其设为false</description>
<param-name>debug</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<description>使用服务器推技术(反转AJAX)</description>
<param-name>activeReverseAjaxEnabled</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>
initApplicationScopeCreatorsAtStartup
</param-name>
<param-value>true</param-value>
</init-param>
<init-param>
<param-name>maxWaitAfterWrite</param-name>
<param-value>100</param-value>
</init-param>
<load-on-startup>4</load-on-startup>
</servlet>
<servlet-mapping>
<servlet-name>dwr-invoker</servlet-name>
<url-pattern>/dwr/*</url-pattern>
</servlet-mapping>
3.在web.xml的同级目录下新建dwr.xml文件,具体内容如下:
<?xmlversion="1.0"encoding="UTF-8"?>
<!DOCTYPEdwrPUBLIC "-//GetAheadLimited//DTD Direct Web Remoting 2.0//EN""http://getahead.org/dwr/dwr20.dtd">
<dwr>
<allow>
<createcreator="new"javascript="DemoTest">
<paramname="class"value="com.demo.DemoTest"/>
</create>
</allow>
</dwr>
这是dwr的基本配置,DemoTest在web页面的javascript中使用,com.demo.DemoTest是实现了需要调用的方法,相当于java类中的一个映射,在javascript中调用DemoTest.java类中的方法,即可在dwr中调用。
其中DemoTest.java类中,下面两个方法尤为重要,这两个方法,是用来加载页面时,获取在线用户使用,如下图:
4.接下来开始进行消息推送,在推送页面和接受页面引入下面三个文件,上面个js文件是导入jar包自带的,下面一个js文件是根据dwr.xml配置自动生成的,无需另外引入项目中,并对dwr进行ajax激活反转:
5.根据dwr.xml中配置的映射,通过DemoTest调用java类中的方法进行消息推送,java类中方法如下:
public voidsendMsg(String userid, String message, String jsFuc) {
final String userId = userid;
final String msg = message;
final String jsFunc = jsFuc;
Browser.withAllSessionsFiltered(new ScriptSessionFilter() {
public boolean match(ScriptSessionsession) {
if (session.getAttribute("userId")==null){
returnfalse;
}else {
return (session.getAttribute("userId")).equals(userId);
}
}
},newRunnable() {
private ScriptBufferscript =new ScriptBuffer();
public void run() {
// 推送消息
script.appendCall(jsFunc,msg);
Collection<ScriptSession>sessions = Browser.getTargetSessions();
for (ScriptSessionscriptSession : sessions) {
scriptSession.addScript(script);
}
}
});
}
调用时,只需传入被推送人userid,推送的消息message,和用来处理信息的js方法名,被推送页面自动寻找对应的js方法,并接受推送信息进行处理。方便快捷的实现了消息传递功能。
其中,userid是被推送消息的人,message则为你想推送的消息,jsFuc为被推送的页面中的js方法,此方法用于接受msg,得到并处理推送内容,具体js处理消息代码如下。
本例以推送所有用户在线页面为例,同时开三个浏览器,一个作为推送方,两个作为被推送方,效果如下:
- DWR服务器推技术(实现消息实时推送功能)
- 使用dwr实现后台消息推送功能
- Dwr java服务器反推技术(服务器推送到页面)
- dwr推技术(服务器向jsp页面推送弹出框--bs)
- DWR实现消息推送
- DWR Server Push(服务器推技术) 实现即时聊天功能(WEB)
- DWR Server Push(服务器推技术) 实现即时聊天功能(WEB)`
- DWR Server Push(服务器推技术) 实现即时聊天功能(WEB)`
- DWR Server Push(服务器推技术) 实现即时聊天功能(WEB)`
- DWR实现推送技术
- DWR实现服务器向客户端推送消息(可用于大屏消息墙等)JAVA
- dwr推技术实现即时消息(一)
- dwr 后台服务器推送技术
- DWR Server Push(服务器推技术) 实现即时聊天
- PHP Web实时消息后台服务器推送技术--GoEasy
- C++ Web实时消息后台服务器推送技术---GoEasy
- ASP.NET Web实时消息后台服务器推送技术--GoEasy
- C语言 Web实时消息后台服务器推送技术---GoEasy
- 有用的链接
- Ethereal 过滤规则
- C#索引器
- Android之仿美拍主要菜单滑动反弹效果
- 【转】____前端构建工具gulpjs的使用介绍及技巧
- DWR服务器推技术(实现消息实时推送功能)
- Qlik Sense Desktop 初步体验
- socket简单实例
- 举例说明enum(枚举类型)的使用
- opencv视频基础操作
- (示例1)创建视频 AR 应用
- SSO实现单点登录的原理
- 轻松开启Windows 10的ReFS文件系统
- 【Unity Shader】自定义材质面板的小技巧