DWR单向推送
来源:互联网 发布:编程工作怎么样 编辑:程序博客网 时间:2024/06/05 14:40
最近公司的一个项目的一个功能是涉及到推送这样的一个功能,本人呢就选择了DWR,至于DWR在这里就不用多介绍了,大家可以去百度看一下相关的资料。网上群推送的例子是非常多的 ,但是本人的需求是单向推送的,在网上查了许多资料啊,都没有具体的说法,都是随便给点代码。经过本人研究呢,也写了一个demo,希望可以供大家学习参考。我这里用的DWR3的,低版本的也应该是同样的思路的。
首先呢 说一下ScriptSession这个东西。ScriptSession当我们访问一个页面的时候,如果是第一次访问,就会创建一个新的HttpSession,之后再访问的时候,就会保持当前的Session,即使是刷新,也能保持当前的HttpSession。但是,ScriptSession不同,第一次访问,会创建一个ScriptSession,但是,如果你刷新,就会创建一个新的ScriptSession.
第一,我是写了一个页面初始化的方法:setScriptSessionFlag.这个方法是将用户id和页面脚本session绑定,这里呢我的用户id是写死的,这个没什么到时候大家看情况处理就行了。
public void setScriptSessionFlag(String userId) {
WebContextFactory.get().getScriptSession().setAttribute("userId", userId);
}
第二,推送的方法:addComplain。相关的一写信息我就不多解释了 ,网上可以查的到。
private List<String> messages = new LinkedList<String>(); //接收信息
public void addComplain(String receiveId, String complain,
HttpServletRequest request) {
System.out.println("有客户请求,消息为:" + complain);
ServletContext context = request.getSession().getServletContext();
ServerContext serverContext = ServerContextFactory.get(context); //获取上下文
//获取浏览GetMessage.jsp的所有访问者的session
Collection<ScriptSession> sessions = serverContext.getScriptSessionsByPage("/message/GetMessage.jsp");
for (ScriptSession scriptSession : sessions) {
String userId = (String) scriptSession.getAttribute("userId"); //获取页面的scriptSession id
if(null != receiveId && receiveId.equals(userId)){
messages.add(complain);
Util util = new Util(scriptSession);
util.addFunctionCall("receiveMessages", messages);
}
}
}
第三, 这个是jsp页面
<script type="text/javascript">
function sendMessage()
{
var message=$("message").value;
sendcom.addComplain("2",message);
}
function receiveMessages(messages)
{
var chatlog = "";
for (var data in messages) {
chatlog = "<div>" + dwr.util.escapeHtml(messages[data]) + "</div>" + chatlog;
}
dwr.util.setValue("list", chatlog, { escapeHtml:false });
}
//初始方法
function init(){
dwr.engine.setActiveReverseAjax(true); //这个是非常重要的
sendcom.setScriptSessionFlag("7");
}
</script>
</head>
<body onload="init()">
<form method="get" action="GetMessage.jsp">
input message:
<input id="message" type="text"
onkeypress="dwr.util.onReturn(event, sendMessage)" />
<input type="button" value="send" onclick="sendMessage()" />
<br>
<div id="list"></div>
</form>
</body>
</html>
就是这样一个简单的demo,对于其他的配置我就不详说了,因为其他都是dwr的一般配置。
- DWR单向推送
- DWR推送
- dwr推送
- dwr 后台推送技术
- DWR实现推送技术
- dwr 后台推送技术
- dwr后台推送技术
- dwr 推送实现
- dwr推送spring实现
- dwr 消息推送
- DWR推送技术
- DWR反转实现推送
- dwr消息推送
- DWR的服务器推送
- DWR 3.消息推送
- DWR推送技术 “
- DWR的全局推送
- DWR的精确推送
- printk 输出
- hdu 4284 Travel
- SharePoint Pages(3)之网站页面
- 目前支持REST的Java的Web框架
- SharePoint Pages(4)之应用程序页
- DWR单向推送
- SharePoint Pages(5)之应用程序页的安全性
- strtol函数
- java小小知识点
- ZOJ 3201 Tree of Tree 大水树形背包
- linux系统移植问题总结
- 如何在SharePoint中创建Custom Master Page
- 数字集成电路设计-3-除法器的verilog简单实现(续)
- 为SharePoint网站创建自定义导航菜单