comet4j 消息推送

comet4j 消息推送

项目需求我们系统集成大量的接口供其他系统调用,为了实现当接口出现错误时能够及时提示管理人员调整。具体:现有 A, B, C, D四台计算机, A和B为服务器,C和D为普通客户机,我们系统在B上,A调用B上的接口,C和D正登陆B部署的web项目。当A调用B出现异常,我们将异常信息已经传输的数据在C和D的界面弹出。

方案1:用前台定时器对系统日志表刷新,

方案2:使用消息推送

我这里先写个 dome

1.准备工作

下载所需工具  链接:http://pan.baidu.com/s/1sk9H5WL 密码:bibg

2.配置 tomcat,打开server.xml

    修改前

<Connector port="8080" protocol="HTTP/1.1" connectionTimeout="20000" redirectPort="8443" />

    修改后

<Connector URIEncoding="UTF-8" connectionTimeout="20000" port="8080" protocol="org.apache.coyote.http11.Http11NioProtocol" redirectPort="8443"/>

    在eclipse上开发修改server.xml  

  

 

3.将jar放入项目中   



 

   

4.将js引入到要显示的页面里边



 

5.配置web.xml

(1)

<listener>
    <description>Comet4J容器侦听</description>
    <listener-class>org.comet4j.core.CometAppListener</listener-class>
  </listener>
  <servlet>
    <description>Comet连接[默认:org.comet4j.core.CometServlet]</description>
    <display-name>CometServlet</display-name>
    <servlet-name>CometServlet</servlet-name>
    <servlet-class>org.comet4j.core.CometServlet</servlet-class>
  </servlet>
  <servlet-mapping>
    <servlet-name>CometServlet</servlet-name>
    <url-pattern>/conn</url-pattern>
  </servlet-mapping>

 (2) 初始化

<listener>  
  <description>HelloWorld</description>  
  <listener-class>org.pbw.web.test.HelloWorld</listener-class>  
</listener>

6 初始化实现类

public class HelloWorld implements ServletContextListener {
	 private static final String CHANNEL = "hello";  
     public void contextInitialized(ServletContextEvent arg0) {  
             CometContext cc = CometContext.getInstance();  
             cc.registChannel(CHANNEL);
     }  
     public void contextDestroyed(ServletContextEvent arg0) {  

     }  

}

   7.jsp页面实现

	<script type="text/javascript" language="javascript">
	 	$(document).ready(function() {
	 		 var hello = document.getElementById('hello');
	 		JS.Engine.on('hello',  function(text){
	 			hello.innerHTML=text;
	 		});
	 	    JS.Engine.start('conn');  
	 	});
	</script>
 <div id="hello"></div>

    8.调用接口时向客户端推送消息

   

http://127.0.0.1:8080/org.outdoors.core/ws/co?wsdl

   

 

   接口实现类

@Service
public class UIServiceImpl implements IUserService {

	@Override
	public String findUserList(String str) {
		try {
			  if("1".equals(str)){
				     Comet4jUtil.sendMsgToClient("调用接口成功!");
			 }
		} catch (Exception e) {
		}
		return "1";
	}

}
public class Comet4jUtil {
	private static final String CHANNEL = "hello";  
	public static boolean sendMsgToClient(String str){
		CometEngine engine = CometContext.getInstance().getEngine();  
		engine.sendToAll(CHANNEL , "你很讨厌!");
	     return true;
	}

}

看看效果吧



 

这里什么都没有对吧调用下接口试试!



 

这里的数据就是从后台推到前台客户端(所有的客户端)的

猜你喜欢

转载自pengbaowei0311.iteye.com/blog/2302882