1 //引入所需要的类2 dojo.require("dojox.cometd");3 dojo.require("dojox.cometd.timestamp");4 5 //定义一个room类6 varroom={7 //定义属性8 _last:"",//最后发送消息的人员(如果不是本人,则显示为空)9 _username:null,//当前的用户名10 _connected:true,//当前的连接状态 true已经连接, false表示未连接11 groupName:"whimsical",//组名(未知)12 13 //登录操作14 join:function(name){15 16 if(name==null||name.length==0){17 alert('Please enter a username!');18 }else{19 20 dojox.cometd.init(newString(document.location).replace(/http:\/\/[^\/]*/,'').replace(/\/examples\/.*$/,'')+"/cometd");21 //dojox.cometd.init("http://127.0.0.2:8080/cometd");22 this._connected=true;23 24 this._username=name;25 dojo.byId('join').className='hidden';26 dojo.byId('joined').className='';27 dojo.byId('phrase').focus();28 29 //subscribe and join30 dojox.cometd.startBatch();31 dojox.cometd.subscribe("/chat/demo", room,"_chat", { groupName:this.groupName});32 dojox.cometd.publish("/chat/demo", {33 user: room._username,34 join:true,35 chat : room._username+"has joined"36 }, { groupName:this.groupName });37 dojox.cometd.endBatch();38 39 //handle cometd failures while in the room40 room._meta=dojo.subscribe("/cometd/meta",this,function(event){41 console.debug(event);42 if(event.action=="handshake"){43 room._chat({ data: {44 join:true,45 user:"SERVER",46 chat:"reinitialized"47 } });48 dojox.cometd.subscribe("/chat/demo", room,"_chat", { groupName:this.groupName });49 }elseif(event.action=="connect"){50 if(event.successful&&!this._connected){51 room._chat({ data: {52 leave:true,53 user:"SERVER",54 chat:"reconnected!"55 } });56 }57 if(!event.successful&&this._connected){58 room._chat({ data: {59 leave:true,60 user:"SERVER",61 chat:"disconnected!"62 } });63 }64 this._connected=event.successful;65 }66 }, {groupName:this.groupName });67 }68 },69 70 //离开操作71 leave:function(){72 if(!room._username){73 return;74 }75 76 if(room._meta){77 dojo.unsubscribe(room._meta,null,null, { groupName:this.groupName });78 }79 room._meta=null;80 81 dojox.cometd.startBatch();82 dojox.cometd.unsubscribe("/chat/demo", room,"_chat", { groupName:this.groupName });83 dojox.cometd.publish("/chat/demo", {84 user: room._username,85 leave:true,86 chat : room._username+"has left"87 }, { groupName:this.groupName });88 dojox.cometd.endBatch();89 90 //switch the input form91 dojo.byId('join').className='';92 dojo.byId('joined').className='hidden';93 dojo.byId('username').focus();94 room._username=null;95 dojox.cometd.disconnect();96 },97 98 //发送消息99 chat:function(text){100 if(!text||!text.length){101 returnfalse;102 }103 dojox.cometd.publish("/chat/demo", { user: room._username, chat: text}, { groupName:this.groupName });104 },105 106 //从服务器收到消息后,回调的方法107 _chat:function(message){108 varchat=dojo.byId('chat');109 if(!message.data){110 console.debug("bad message format"+message);111 return;112 }113 varfrom=message.data.user;114 varspecial=message.data.join||message.data.leave;115 vartext=message.data.chat;116 if(!text){return; }117 118 if(!special&&from==room._last ){119 from="";120 }else{121 room._last=from;122 from+=":";123 }124 125 if(special){126 chat.innerHTML+=""+from+"

"+text+"
";127 room._last="";128 }else{129 chat.innerHTML+=""+from+" "+text+"
";130 }131 chat.scrollTop=chat.scrollHeight-chat.clientHeight;132 },133 134 //初始操作135 _init:function(){136 dojo.byId('join').className='';137 dojo.byId('joined').className='hidden';138 dojo.byId('username').focus();139 140 varelement=dojo.byId('username');141 element.setAttribute("autocomplete","OFF");142 dojo.connect(element,"onkeyup",function(e){//支持回车,登录143 if(e.keyCode==dojo.keys.ENTER){144 room.join(dojo.byId('username').value);145 returnfalse;146 }147 returntrue;148 });149 150 dojo.connect(dojo.byId('joinB'),"onclick",function(e){//绑定 room.join方法到 Join按扭151 room.join(dojo.byId('username').value);152 e.preventDefault();153 });154 155 element=dojo.byId('phrase');//取得消息框156 element.setAttribute("autocomplete","OFF");157 dojo.connect(element,"onkeyup",function(e){//支持回车发送消息158 if(e.keyCode==dojo.keys.ENTER){159 room.chat(dojo.byId('phrase').value);160 dojo.byId('phrase').value='';161 e.preventDefault();162 }163 });164 165 dojo.connect(dojo.byId('sendB'),"onclick",function(e){//绑定 room.chat方法到 sendB按扭166 room.chat(dojo.byId('phrase').value);167 dojo.byId('phrase').value='';168 });169 dojo.connect(dojo.byId('leaveB'),"onclick", room,"leave");//绑定 room.leave方法到 leaveB按扭170 }171 };172 173 //页面装载时,调用room._init方法174 dojo.addOnLoad(room,"_init");175 //页面关闭时,调用 room.leave方法176 dojo.addOnUnload(room,"leave");177 178 //vim:ts=4:noet:

cometd java_Jetty cometd(Continuation)学习笔记相关推荐

  1. Kotlin 学习笔记(四)—— 协程的基础知识,面试官的最爱了~

    又是一个月没见了,坚持永远是世上最难的事情,但,往往难事才会有更大的收获.与君共勉~ 前段时间一直在学习 Compose,所以导致 Kotlin 笔记系列搁置了好久.一方面是因为 Compose 的学 ...

  2. C# 学习笔记——PL 并行编程 TPL 和传统 .NET 异步编程

    C# 学习笔记--PL 并行编程 TPL 和传统 .NET 异步编程 Task C# 多线程和异步模型 TPL模型 Task,异步,多线程简单总结 1,如何把一个异步封装为Task异步 Task.Fa ...

  3. Python基础教程-菜鸟教程学习笔记1

    Python基础教程-菜鸟教程学习笔记1 文章目录 Python基础教程-菜鸟教程学习笔记1 前言 Python 简介 1. 第一个Python程序 2. Python 中文编码 3. 基本语法 1) ...

  4. PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 call

    您的位置 首页 PyTorch 学习笔记系列 PyTorch 学习笔记(六):PyTorch hook 和关于 PyTorch backward 过程的理解 发布: 2017年8月4日 7,195阅读 ...

  5. 容器云原生DevOps学习笔记——第三期:从零搭建CI/CD系统标准化交付流程

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  6. 容器云原生DevOps学习笔记——第二期:如何快速高质量的应用容器化迁移

    暑期实习期间,所在的技术中台-效能研发团队规划设计并结合公司开源协同实现符合DevOps理念的研发工具平台,实现研发过程自动化.标准化: 实习期间对DevOps的理解一直懵懵懂懂,最近观看了阿里专家带 ...

  7. 2020年Yann Lecun深度学习笔记(下)

    2020年Yann Lecun深度学习笔记(下)

  8. 2020年Yann Lecun深度学习笔记(上)

    2020年Yann Lecun深度学习笔记(上)

  9. 知识图谱学习笔记(1)

    知识图谱学习笔记第一部分,包含RDF介绍,以及Jena RDF API使用 知识图谱的基石:RDF RDF(Resource Description Framework),即资源描述框架,其本质是一个 ...

最新文章

  1. 【插件】jQuery.iviewer----图片浏览(滚动放大缩小问题解决)
  2. 快速增量备份程序 DeltaCopy
  3. 给共享程序集延迟签名
  4. 七步精通Python机器学习
  5. kibana7.x操作
  6. 【数据竞赛】基于LSTM模型实现共享自行车需求预测
  7. 开启tomcat的apr模式,并利用redis做tomcat7的session的共享。
  8. 用框架的你,可能早已忽略了这些事件API
  9. UA Web挑战会议:针对初创公司的SpringIO
  10. UML之用例图(use case)箭头方向
  11. vue列表渲染中key的作用_vue中:key的作用
  12. 18、Windows API 图形用户界面(2)
  13. 克就克嘛!哪个怕哪个
  14. matlab做班级抽签,matlab抽签程序(含源码)
  15. 《Mybatis 手撸专栏》第10章:使用策略模式,调用参数处理器
  16. 在网页中实现:手势解锁密码
  17. 测试9年,面试华为要薪1万,华为员工:公司没这么低工资的岗
  18. tsconfig.json详细配置
  19. AHRS(航姿参考系统)和IMU(惯性测量单元)的区别【转】
  20. Odoo message 日志

热门文章

  1. 精讲精练k-近邻算法:knn(一)
  2. 英伟达凭借GPU与AI笑傲本届CES展会
  3. 浅谈氢能源三大竞争优势
  4. Java实现10万条经纬度数据压缩后只有15k
  5. IPC网络高清摄像机基础知识3(Insta360硬件设计之路 “来自2015年”)
  6. 用python循环结构计算派的值_Python程序设计实验报告四:循环结构程序设计(设计型实验)...
  7. 20175227张雪莹 2018-2019-2 《Java程序设计》第六周学习总结
  8. 实现加减乘除混合运算和归零功能的计算器
  9. 一图理解geos的九交矩阵模型——面面关系
  10. #4306. 贪玩蓝月