DWR消息推送实现步骤详解
5星 · 超过95%的资源 需积分: 10 55 浏览量
更新于2024-09-16
1
收藏 40KB DOC 举报
"dwr实现消息精确推送技术详解"
DWR (Direct Web Remoting) 是一个开源Java库,它允许JavaScript在Web浏览器中与服务器端的Java代码进行交互,实现AJAX(Asynchronous JavaScript and XML)功能。在本文档中,我们将探讨如何使用DWR来实现消息的精确推送。
首先,要在项目中启用DWR的消息推送功能,你需要将dwr.jar文件引入到项目的类路径中。这个库包含了DWR的核心组件,使得客户端和服务器端之间的通信成为可能。
接着,需要在`web.xml`配置文件中设置DWR的Servlet。这个Servlet负责处理来自客户端的请求,并将结果返回给浏览器。配置如下:
```xml
<servlet>
<servlet-name>dwr-invoker</servlet-name>
<servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
...
<!-- 其他配置参数 -->
...
</servlet>
```
配置参数中,`crossDomainSessionSecurity` 设置为 `false` 表示跨域会话安全被禁用,这可能适用于某些特定的跨域场景。`allowScriptTagRemoting` 设为 `true` 启用了通过`<script>`标签进行远程调用的功能。`classes` 参数指定了可暴露给JavaScript的Java类,这里我们设置为 `java.lang.Object`,意味着所有类都可访问,但在实际应用中应根据需求指定具体的类。`activeReverseAjaxEnabled` 设置为 `true` 开启了Active Reverse Ajax,即服务器主动向客户端推送数据的能力。
此外,还有一些其他的初始化参数,例如 `initApplicationScopeCreatorsAtStartup` 和 `maxWaitAfterWrite`,它们分别控制应用范围创建器的初始化时机以及写操作后的最大等待时间,这些参数可以根据具体应用场景调整。
配置完成后,我们需要在服务器端创建一个能够发送消息的Java类,通常这个类会包含一个或多个方法,用于生成或获取需要推送的消息。这些方法需要使用DWR的注解(如 `@RemoteProxy`)来标记,以便DWR能够自动暴露它们供JavaScript调用。
在客户端,你将需要编写JavaScript代码来监听和接收服务器端推送的消息。DWR提供了一个`Control`对象,通过它可以注册回调函数,当服务器有新消息时,这些回调函数会被调用。例如:
```javascript
var dwr = DWRUtil.useDWR();
dwr.engine.setAsync(true); // 设置异步模式
dwr逆向Ajax创建一个实例
var myReverseAjax = dwr逆向Ajax.create();
myReverseAjax.registerCallback(function(data, error) {
if (!error) {
console.log("接收到的消息:", data);
// 在这里处理接收到的消息
}
});
```
在这个例子中,`registerCallback` 方法用来注册一个回调函数,当服务器推送消息时,这个函数会被调用,`data` 参数会包含接收到的数据。
为了触发消息的推送,你可以在服务器端的Java代码中调用相应的DWR方法。例如,当有新的消息产生时,你可以调用之前配置的暴露给JavaScript的方法,DWR会自动将调用的结果推送到所有已注册的客户端。
总结,DWR的消息推送功能是通过配置Servlet、暴露Java类和方法,以及在客户端注册回调函数来实现的。它允许服务器端主动向客户端发送数据,从而实现实时的消息提醒功能。理解并掌握这些步骤,可以帮助开发者高效地构建具有实时交互特性的Web应用程序。
2015-05-15 上传
200 浏览量
1760 浏览量
2016-09-12 上传
2013-10-10 上传
2013-11-05 上传
今天夏末
- 粉丝: 5
- 资源: 1
最新资源
- Fisher Iris Setosa数据的主成分分析及可视化- Matlab实现
- 深入理解JavaScript类与面向对象编程
- Argspect-0.0.1版本Python包发布与使用说明
- OpenNetAdmin v09.07.15 PHP项目源码下载
- 掌握Node.js: 构建高性能Web服务器与应用程序
- Matlab矢量绘图工具:polarG函数使用详解
- 实现Vue.js中PDF文件的签名显示功能
- 开源项目PSPSolver:资源约束调度问题求解器库
- 探索vwru系统:大众的虚拟现实招聘平台
- 深入理解cJSON:案例与源文件解析
- 多边形扩展算法在MATLAB中的应用与实现
- 用React类组件创建迷你待办事项列表指南
- Python库setuptools-58.5.3助力高效开发
- fmfiles工具:在MATLAB中查找丢失文件并列出错误
- 老枪二级域名系统PHP源码简易版发布
- 探索DOSGUI开源库:C/C++图形界面开发新篇章