设为首页
优惠IDC
收藏本站
六狼博客
六狼论坛
开启辅助访问
切换到窄版
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
只需一步,快速开始
快捷导航
门户
首页
BBS
云计算
大数据
手机
移动开发android,ios,windows phone,windows mobile
编程
编程技术java,php,python,delphi,ruby,c,c++
前端
WEB前端htmlcss,javascript,jquery,html5
数据库
数据库开发Access,mysql,oracle,sql server,MongoDB
系统
操作系统windows,linux,unix,os,RedHat,tomcat
架构
项目管理
软件设计,架构设计,面向对象,设计模式,项目管理
企业
服务
运维实战
神马
搜索
搜索
热搜:
php
java
python
ruby
hadoop
sphinx
solr
ios
android
windows
centos
本版
帖子
用户
六狼论坛
»
首页
›
WEB前端
›
JavaScript
›
推模式的研究
返回列表
查看:
23
|
回复:
0
推模式的研究
[复制链接]
8366
8366
当前离线
积分
325
窥视卡
雷达卡
升级
41.67%
当前用户组为
举人
当前积分为
325
, 升到下一级还需要 175 点。
93
主题
93
主题
93
主题
举人
举人, 积分 325, 距离下一级还需 175 积分
举人, 积分 325, 距离下一级还需 175 积分
积分
325
发消息
楼主
|
发表于 2013-1-23 02:10:23
|
显示全部楼层
|
阅读模式
第一次参见公司的职称评定,评委问了一个问题,是我做权限管理那块的,说admin 管理员修改了一个用户的权限,让这个正在使用中的用户不能再 查看系统日志了 ,如何立刻反映到这个用户上。
我说 可以使用一个线程根据用户ID去请求后台,吧最新的权限信息同步到前台,这也是一个笨办法,能解决问题,可以不巧妙,如果我当时对推模式有所研究 一定会回答好这个问题。
推模式的 好处是由后台主动把信息退送到客户端 (比如浏览器),引起客户端 (比如HTML DOM结构变化)的变化,使用推模式就能很好的解决 我答辩时的问题,我那种扫描轮询的方式 会加大服务的压力
首先了解下什么是 推模式,以及一个 推模式的开源实现 (DWR)
以下是来自网上:
ajax 推模式
http://www.iteye.com/topic/155609
一个例子 聊天室
http://www.iteye.com/topic/199079
DWR 长连接方式的若干问题
http://www.blogjava.net/josson/archive/2008/03/31/189810.html
DWR推技术在开发中需要注意的ScriptSession问题
http://www.blogjava.net/zhyiwww/archive/2009/02/24/236318.html
深入理解基于 HTTP 长连接的“服务器推”技术(Comet)
http://bbs.phpchina.com/viewthread.php?tid=100836
http://hi.baidu.com/renyangok/blog/item/f4bb66803fbdadd2bc3e1ea3.html
dwr推
http://chenjumin.iteye.com/blog/690071
下面是 来自晚上的一个 聊天室的 推模式(使用DWR)的例子 我做了简单的修改
1. 聊天室用户信息 使用单例模式 放在一个Vector中 ,以前是网上的例子是放在list中的,这样做事为了解觉并发问题,应为 Vector 是同步的
2.小米同学做个一个简单的界面
3.对方法在session 中的用户 User 实现了 HttpSessionBindingListener 接口 用户推出 或者session 超时时候引起
聊天室人数变化 会直接推送到 前台页面
基本的原理是 使用http/1.1的长连接 监听某个页面,然后将服务器上的数据推送到 监听的页面,由于是服务器端主动推送数据的 所以高效 省时,节约资源
另外:
web服务器 所能处理的链接数 是有限的,每个用户都开一个长链接 而不释放,当连接数达到峰值时候会 阻塞后面的链接,因此需要 连接池技术 或者 叫链接 复用 ,好在这个问题 已经有解决方案了,我自己还没实现,最近加班忙的很 等闲了 我在给以前的 chat 加上 连接池!
面向 Java 开发人员的 Ajax:
使用 Jetty 和 Direct Web Remoting 编写可扩展的 Comet 应用程序
http://www.ibm.com/developerworks/cn/java/j-jettydwr/
注:
1.附件中是聊天室 的 源码 导入 eclipse 可直接修改!
2.将聊天室发布在tomcat中,验证推模式
a.首先建立 chat.xml 在 tomcat的 D:\apache-tomcat-6.0.18\conf\Catalina\localhost 下 ,内容如下(根据自己的tomcat安装目录做相应的修改) :
<Context path="/chat" docBase="D:\workspace2\chat\WebRoot" debug="0" reloadable="true"></Context>
3.启动tomcat .访问 http://localhost:8080/chat 可以看到 聊天室的页面
为了便于测试 我们需要开 两个 浏览器 分别 注册 聊天室 成员 然后 互相聊天 ,看看推模式是如何在两个页面上传送数据的
回复
使用道具
举报
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
显身卡
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
Copyright © 2008-2020
六狼论坛
(http://it.6wolf.com) 版权所有 All Rights Reserved.
Powered by
Discuz!
X3.4
京ICP备14020293号-2
本网站内容均收集于互联网,如有问题请联系
QQ:389897944
予以删除
快速回复
返回顶部
返回列表