DWR简单推送实现

使用DWR的推送实现一个简单的聊天室

web.xml配置如下


<servlet>
    <servlet-name>dwr-invoker</servlet-name>
    <servlet-class>org.directwebremoting.servlet.DwrServlet</servlet-class>
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
    <init-param>
        <param-name>activeReverseAjaxEnabled</param-name>
        <param-value>TRUE</param-value>
    </init-param> 
</servlet>
<servlet-mapping>
    <servlet-name>dwr-invoker</servlet-name>
    <url-pattern>/dwr/*</url-pattern>
</servlet-mapping>


dwr.xml配置一个简单的对象


<dwr>
  <allow>
  	<create creator="new" javascript="MessagePush">
  		<param name="class" value="com.kenshiro.MessagePush"></param>
  	</create>
  </allow>
</dwr>
Java类com.kenshiro.MessagePush对应javascript对象名为MessagePush


MessagePush.java如下

public class MessagePush {
    public void send(String msg){	
	WebContext webContext = WebContextFactory.get();
	String ip = webContext.getHttpServletRequest().getRemoteAddr().toString();//获取客户端IP
	String page = "/DWR/index.html" ;               //DWR为项目名称,页面为index.html
	Collection<ScriptSession> sessions = webContext.getScriptSessionsByPage(page);		
	Util util = new Util(sessions);
	util.addFunctionCall("dwrtest", ip + ": " + msg);             //dwrtest为javascript函数     
    } 
}

index.html 页面代码

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script type="text/javascript" src="dwr/engine.js"></script>
<script type="text/javascript" src="dwr/util.js"></script>
<script type="text/javascript" src="dwr/interface/MessagePush.js"></script>
<script type="text/javascript">
	
	function dwrtest(data){ 
		document.getElementById("area").innerHTML = document.getElementById("area").innerHTML + "\n" +data;
	}
	
	function send(msg){
		if(event.keyCode == 13){
			MessagePush.send(msg)
		}
	}
</script>
</head>
<body onload="dwr.engine.setActiveReverseAjax(true);">
<textarea style="width: 800px; height: 600px;" id="area">
</textarea>
<br />

<input type="text" style="width: 800px;"  id="in" onkeyup="send(this.value)" />
</body>
</html>


转载于:https://my.oschina.net/kenshiro/blog/160935

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值