首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > JAVA > Java Web开发 >

DWR PUSH 怎么指定用户推动

2013-11-29 
DWR PUSH 如何指定用户推动DWR 如何指定用户用户推送消息,需求是这样的,用户登录平台后,调用DWR中的方法,

DWR PUSH 如何指定用户推动
DWR 如何指定用户用户推送消息,需求是这样的,用户登录平台后,调用DWR中的方法,该方法根据当前用户请求的ID生成一个线程 连接到指定的SOCKET服务器上,如果多个用户登录会生成多个,如果SOCKET服务器端有返回信息,就把该信息推动到指定的用户浏览器中去,使用DWR PUSH 如何做,web.xml dwr.xml已经配置好了,现在已经完成如下代码
Ajax 类


public class Ajax {

public ServletContext getServletContext(){
return getWebContext().getServletContext();

}
public HttpSession getSession(){
WebContext context = WebContextFactory.get();
return context.getSession();
}
public WebContext getWebContext(){
return WebContextFactory.get();
}
}

CTIListenerAjax  类DWR 方法实现类

public class CTIListenerAjax extends Ajax{

private Log logMsg = LogFactory.getLogger(CTIListenerAjax.class);
public void ctiListener(){
String empCode =(String)this.getSession().getAttribute("EMPCODE");
ServerUserThread sut = new ServerUserThread();
sut.setSc(this.getServletContext());
sut.setEmpCode(empCode);
sut.setWc(this.getWebContext());
Thread thread = new Thread(sut);
thread.start();
}
}

ServerUserThread 用户线程类,其中CTIClient是当前用户连接socket的功能类,该类根据用户ID 连接到SOCKET服务器端,服务器端根据用户ID ,返回对应内容,改内容什么时间返回不确定

public class ServerUserThread implements Runnable {

private ServletContext sc ;
private String empCode;
private WebContext wc ;
private boolean tStatus=true;

public ServletContext getSc() {
return sc;
}

public void setSc(ServletContext sc) {
this.sc = sc;
}

public String getEmpCode() {
return empCode;
}

public void setEmpCode(String empCode) {
this.empCode = empCode;
}

public WebContext getWc() {
return wc;
}

public void setWc(WebContext wc) {
this.wc = wc;
}

public void run() {

try {

while(tStatus){
    CTIManager ctiM = new CTIManager(sc);
    CTIUserInfo ctiUser = ctiM.getCTIUserInfo(empCode);
    CTIClient ctiClient = new CTIClient();
    ctiClient.setCtiUser(ctiUser);
    String result = ctiClient.getCTIMsg(empCode);
                            如何返回信息
}

} catch (Exception e) {
e.printStackTrace();
}
}

public boolean isTStatus() {
return tStatus;
}

public void setTStatus(boolean status) {
tStatus = status;
}

}
PUSH
[解决办法]
你这是要服务器把消息发给指定的客户端?
[解决办法]
Browser.withSession
或者Browser的其他发送方法试试。

热点排行