1:原理:
Http连接是无状态的,请求过去就返回,所以;要实现http的长连接,实现服务器的想客户端推送,需要阻塞请求,等到数据更新然后处理返回给客户端,此时客户端自动请求服务端:
js代码简单的为:
function sendMsg() {
var jid = $("#jid").val();
var tojid = $("#list").val();
var content = $("#msg").val();
$.post("chat", {
jid : jid,
tojid : tojid,
content : content
}, function(result) {
});
}
$(document).ready(function() {
/**
* 聊天窗口
*/
$.post("show", {
eventName : 'msg'
}, function(result) {
$("#his").append(result).append("<br/>");
showMsg();
});
/**
* 用户列表
*/
$.post("userlist",{eventName : 'userlist'}, function(result){
var userlist = $("#userlist");
userlist.append(result).append("<br/>");
});
});
function showMsg() {
$.post("show", {
eventName : 'msg'
}, function(result) {
$("#his").append(result);
showMsg();
});
}
我们以聊天程序为列:
初始化的时候 客户端发一次show请求到servlet,服务器阻塞wait改请求,然后等到客户端发送消息;在那个servlet中释放notifyall改阻塞,继续下执行处理-----。
分享到:
相关推荐
为了实现实时通信,一种常见的解决方案是“Ajax+服务器推送”技术,本文将围绕这个主题,特别是通过JSP实现一个简单的Web聊天应用,探讨其工作原理和技术细节。 【服务器推送】: 服务器推送是一种在服务器端主动向...
综上所述,"ajax-demo推送演示例子"涉及到Ajax技术与Servlet服务器端推送的结合,通过长轮询实现页面实时更新的效果。开发者可以通过理解Ajax的工作机制,以及如何在服务器端实现推送,来构建类似的交互式Web应用。
这个过程被称为“反向Ajax”或“服务器推送”,它能够实现在不依赖用户操作的情况下,服务器主动向客户端发送数据。 DWR的核心组件包括几个部分: 1. **Engine**:这是DWR的核心,负责处理JavaScript到Java的转换和...
本文将详细探讨如何通过JAVA实现多种服务器推送客户端的方式,包括Ajax轮询、长连接、长轮询以及Iframe刷新。 1. **Ajax轮询** Ajax轮询是最基础的实现方式,其原理是客户端定时发送Ajax请求到服务器,服务器接收...
本文将详细介绍如何实现DWR的服务器推送功能。 一、DWR简介 DWR的核心功能是通过AJAX技术创建了一个JavaScript到Java的桥梁,使得开发者可以像操作本地对象一样操作远程服务器上的对象。它支持自动类型转换、错误...
【标题】"基于AJAX(XMLHTTPRequest)的服务器推送框架.zip" 涉及的主要知识点是AJAX(异步JavaScript和XML)技术以及XMLHttpRequest对象在实现服务器推送中的应用。AJAX是一种网页开发技术,它允许网页在不刷新整个...
DWR使用一种称为Reverse Ajax或Comet的技术来实现服务器推送。它创建了一个持久化的HTTP连接,使得服务器可以在准备好新数据时立即发送,而不需要等待客户端的请求。DWR提供了一种简单的方式来注册JavaScript函数,...
本项目是一个利用Ajax反向推送(Comet技术)实现的Web聊天室源码,通过Java语言的Servlet作为控制器,提供了一个完整的可运行示例。 首先,我们要理解什么是Ajax反向推送(Comet技术)。传统的Ajax请求是客户端发起...
在DWR中,服务器推送是通过一种叫做"Reverse Ajax"或者"Comet"的技术实现的。这种方式可以让服务器在接收到客户端的一个请求后,保持连接开放状态,并在合适的时候通过同一个连接向客户端发送数据,而不是等待客户端...
WebSocket则建立持久连接,允许服务器主动推送新消息给客户端。 在提供的"ChatRoom"源代码中,你可以看到这些概念的具体实现,包括Servlet类、HTML页面和JavaScript脚本。通过分析和运行这个案例,你不仅可以了解...
3. **Comet技术**: Comet是一种模拟服务器推送的技术,包括两种主要实现:长轮询(Long Polling)和流(Streaming)。Servlet 3.0的异步处理可以轻松实现这两种技术,减少不必要的HTTP请求和响应延迟。 4. **前端...
在"用户互推、服务器推送"的场景下,DWR的推送功能可以让服务器主动向客户端发送数据,而不是等待客户端发起请求。这在实时性要求较高的应用中非常有用,比如聊天室、股票报价或者在线游戏等。 这个demo中,我们...
本文将深入探讨如何利用Servlet 3.0的异步功能来构建一个推送信息至客户端的聊天室。 首先,我们需要了解Servlet 3.0的异步处理。在Servlet 2.x版本中,每次HTTP请求都会绑定到一个线程,直到请求处理完成。这种...
5. **事件处理:** 当服务器推送消息时,JavaScript会接收到通知,然后根据需求更新页面或者触发其他客户端事件。 6. **安全性和优化:** 考虑到性能和安全性,可能需要限制长连接的数量,进行连接管理和超时处理,...
- 客户端JavaScript代码:负责建立和维持Comet连接,并处理服务器推送过来的数据。 - 服务器端Java代码:创建Servlet或Filter来处理HTTP请求,当有新消息时,通过挂起的HTTP连接向客户端发送。 为了运行这个示例,...
此外,客户端也需要与服务器保持持久连接,以便实时接收服务器推送的消息。这通常通过AJAX长轮询、WebSocket或者Server-Sent Events (SSE) 实现。在这个例子中,我们可能会选择WebSocket,因为它提供双向通信,适合...
- 完成上述步骤后,部署 Web 工程并启动服务器,然后在客户端(可能是浏览器或 Applet)加载 Pushlet 客户端代码,即可开始接收服务器推送的消息。 通过 Pushlet,开发者可以构建高效、实时的交互式应用,减少了...
DWR(Direct Web Remoting)是一个开源的Java库,它允许在浏览器和服务器之间进行全双工通信,非常适合用于实现Web应用的实时推送功能。 首先,让我们深入理解什么是推送技术。在Web开发中,传统的HTTP协议是一种...
这个类会被DWR自动暴露给JavaScript,以便于服务器推送数据。 ```java public class ServerPushService { public void sendMessage(String message) { // 业务逻辑,获取需要推送的数据 // ... // 调用DWR ...
WebSocket提供了双向通信的全双工通道,而Comet则是通过HTTP长轮询或流等方式模拟服务器推送。这些技术各有优缺点,选择哪种取决于具体应用场景和需求。 综上所述,基于Pushlet的JSP网站消息推送技术是解决实时数据...