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();
}
}
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();
}
}
PUSH
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;
}
}