comet4j解析

本文涉及的产品
公共DNS(含HTTPDNS解析),每月1000万次HTTP解析
全局流量管理 GTM,标准版 1个月
云解析 DNS,旗舰版 1个月
简介: comet4j解析

为什么会有这篇文章呢??

由于最近需要用到服务器推送技术,了解了一下这方面的知识,查找了好多例子,综合考虑使用Comet4j,不过目前这款插件只支持tomcat(按照tomcat的版本需要下载对应的jar包)。

准备工作

1.下载自己对应的版本的jar tomcat6 -----comet4j-tomcat6.jar tomcat7------comet4j-tomcat7.jar

2.下载comet4j.js

3、由于comet4j基于NIO实现,所以需要修改tomcat的server.xml中的配置见下图

将原先的HTTP/1.1改为org.apache.coyote.http11.Http11NioProtocol以支持NIO,这样第一步的准备工作就完成了。

下面 我们准备客户端代码

论坛

("#forum_list");
JS.Engine.start('../comet');
JS.Engine.on(
'hello',function(text){
   
forum_list.html(text);
var html = ""
("#list").html(html);  
("#forum_list8").html("我是测是者a");
});
JS.Engine.on('start',function(cId, channelList, engine){
   
$("#forum_list3").html(cId);
});
}
function addForum(){
   
.ajax({
     
url:'{ctx }/forum/add_forum',
data:{
   'hello':'hello'},
type:"post",
dataType:"json",
success:function(data){
   
// alert("异步成功");
},error:function(){
   
alert("错误!!");
}
});
}



这是论坛页面

模拟论坛提交

下面我们准备服务端代码

@Controller("forumController")
@RequestMapping("/forum")
public class ForumController extends BaseController{
   
@RequestMapping(value = "/forum_list")
public ModelAndView forumList(){
   
return new ModelAndView("forum/forum_list");
}
@RequestMapping(value="/add_forum")
@ResponseBody
public Object addForum(){
   
String abc="我是向前台推送的消息";
User user=new User();
user.setUsername("伟大的天朝");
// 创建CometEngine实体类
CometEngine engine = CometContext.getInstance().getEngine();
engine.sendToAll("hello", user.getUsername());
return user;
}
}

还需要一个监听来创建信道


public class ChannelComet implements ServletContextListener{
   
private static final String CHANNEL = "hello";
public void contextInitialized(ServletContextEvent arg0) {
   
// CometContext是一个单例静态
System.out.println("-----------------------------------------------------------------------------------------");
CometContext cc = CometContext.getInstance();
cc.registChannel(CHANNEL);// 注册应用的channel
System.out.println("注册信道成功");
}
public void contextDestroyed(ServletContextEvent arg0) {
   
}
}

最后来完成我们的配置工作

Comet4J容器侦听
org.comet4j.core.CometAppListener

Comet连接[默认:org.comet4j.core.CometServlet]
CometServlet
CometServlet
org.comet4j.core.CometServlet

CometServlet
/comet

ChannelComet
ChannelComet

index.jsp

注意:
1、此处不再赘述API中的各个类的具体作用及功能,请自己网络查找(天朝的网络上我是找不到API,就不附赠 了)其他的jar包,js已上传comet4j请下载
2、这里面的配置是有顺序要求的,真正的项目中肯定不只是这么几个配置项,配置顺序不对会导致无法响应后台推送到前台的消息
3、监听要换成咱么自己的监听类
4、CometServlet的url-pattern配置和前台的start项中的要一致

目录
相关文章
|
网络协议
百度搜索:蓝易云【websocket和http有什么不同?以及websocket协议如何实现?】
WebSocket和HTTP协议是两种不同的协议,它们在协议设计上有着显著的区别。
94 0
|
4月前
|
网络协议 API 网络安全
Web实时通信的学习之旅:轮询、WebSocket、SSE的区别以及优缺点
Web实时通信的学习之旅:轮询、WebSocket、SSE的区别以及优缺点
370 0
|
机器学习/深度学习 缓存 人工智能
从ChatGPT聊天服务上深挖Http、WebScoket和SSE推送技术的区别
从ChatGPT聊天服务上深挖Http、WebScoket和SSE推送技术的区别
772 1
|
9月前
|
JSON 前端开发 JavaScript
探秘 AJAX:让网页变得更智能的异步技术(下)
探秘 AJAX:让网页变得更智能的异步技术(下)
探秘 AJAX:让网页变得更智能的异步技术(下)
|
9月前
|
XML 前端开发 JavaScript
探秘 AJAX:让网页变得更智能的异步技术(上)
探秘 AJAX:让网页变得更智能的异步技术(上)
探秘 AJAX:让网页变得更智能的异步技术(上)
|
网络协议 API 开发者
百度搜索:蓝易云【Websocket、Socket、HTTP之间的关系。】
总结: HTTP是一种无状态协议,常用于传输静态资源;Socket是一种编程接口,用于实现网络通信;Websocket是在HTTP之上实现的全双工通信协议。它们在通信方式、连接状态和应用场景上存在区别,适用于不同的网络通信需求。
58 0
|
前端开发
前端学习笔记202305学习笔记第二十四天-http解析和请求发送2
前端学习笔记202305学习笔记第二十四天-http解析和请求发送2
68 0
|
Web App开发 移动开发 JavaScript
|
人工智能 JSON 安全
《前端实战总结》之使用postMessage实现可插拔的跨域聊天机器人
由于笔者之前的项目中接触过聊天机器人的项目,主要实现机器人客服模块,以及支持跨多平台使用的目的,所以特地总结一下,希望有所收获。
303 0
|
存储 缓存 JSON
【前端第十二课】http协议内容;前后端通信的方法;分析网络请求的方法
【前端第十二课】http协议内容;前后端通信的方法;分析网络请求的方法