JS代码

//数据返回回调方法function cmtData(data){switch(data.event){case "init":$("#status").html("init...");var userlist = data.list;if(userlist){for(var i=0;i<userlist.length;i++){$("#userlist").append("<a id='user_"+userlist[i].sid+"' href='javascript:void();' οnclick='toidclick(this);'>" + userlist[i].nickname + "<br><a>"); }}break;case "quit":$("#ret_msg").append(data.nickname +"离开聊天室!<br>");$("#userlist #user_"+data.sid).remove();break;case "message":$("#ret_msg").append(data.nickname +"_say:"+ data.msg + "("+data.time+")<br>");break;case "join":$("#ret_msg").append(data.nickname +"加入聊天室!<br>");$("#userlist").append("<a id='user_"+data.sid+"' href='javascript:void();' οnclick='toidclick(this);'>" + data.nickname + "<br><a>");break;}}//系统调用初始化function cmtInit(){connect();}//连接后调用function cmtConnected(){CMT.post('{"event":"login","nickname":"'+$("#nick").val()+'"}');}/function toidclick(e){$("#toid").val(e.id.substring(5));}function connect(){var nick = $("#nick").val();if(nick==''){alert('名称不能为空!');}else{CMT.connect();}}function logout(){CMT.post('{"event":"quit"}');$("#userlist").html('');$("#status").html("nostatus...");}function send(){if(CMT.isconnected()){var data = '{"event":"message","msg":"'+$("#message").val()+'","toid":"'+$("#toid").val()+'"}';CMT.post(data);$("#message").val('');}else{alert('请先点login按钮!');}}var CMT = {};(function(cmt,$){cmt.init = function(){var cmttaget = $("<div id=\"flash_content\" style=\"position: absolute;top: -1000px;left: -1000px\"></div>");$("body").append(cmttaget);//init swfvar swf = new SWFObject("cmt.swf", "__cmt", "25", "25", "7", "#336699");swf.addParam("quality", "low");swf.addParam("wmode", "transparent");swf.addParam("salign", "t");swf.addParam("allowscriptaccess","always");swf.write("flash_content");}cmt.thisMovie = function(movieName){if (window.document[movieName]){return window.document[movieName];}if (navigator.appName.indexOf("Microsoft Internet")==-1){if (document.embeds && document.embeds[movieName])return document.embeds[movieName];}else{ // if (navigator.appName.indexOf("Microsoft Internet")!=-1)return document.getElementById(movieName);}}cmt.isconnected = function(){var isconnected = cmt.getCmt().isconnected();return isconnected;}cmt.getCmt = function(){return cmt.thisMovie("__cmt");}cmt.connect = function(){if(!cmt.isconnected())cmt.getCmt().connect('127.0.0.1',110);elsealert("已与服务器连接!");}cmt.post = function(data){if(cmt.isconnected())cmt.getCmt().post(data);elsealert("与服务器未连接!");}  })(CMT,jQuery)//$(function(){CMT.init();});

此简易服务器消息处理代码

logger.info(">>>>>>>>>>>>>>>>>message");ASObject message = context.getMessage();
mcManager = context.getMcManager();
Object toid = message.get("toid");
Result result = null;SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd hh:mm:ss");
CharacterMC mc = mcManager.get(context.getSession());Map data = new HashMap();
data.put("event", "message");
data.put("sid", context.getSid());
data.put("msg", message.get("msg"));
data.put("nickname",mc.getNickname());
data.put("time", sdf.format(new Date()));
if(toid == null || "".equals(toid)){result = new BroadCastResult(data);
}else{result = new SubscribeResult(data,new Long[]{Long.parseLong((String)toid)},true);
}
context.addResult(result);

欢印大家给我留言改进设计

原创nio socket mina+javascript+flash实现commet长连接网页聊天室相关推荐

  1. Nodejs+socket.io 搭建个人的网页聊天室

    Nodejs+socket.io 搭建个人的网页聊天室 最近看到别人搭建了自己的实时聊天室便产生了兴趣,于是乎自己也着手搭建了一个.在socket这里我选用了socket.io这个模块,在网上看了很多 ...

  2. 使用nettyio+socket.io搭建简单的网页聊天室

    使用nettyio+socket.io搭建简单的网页聊天室 1 目录结构 2 maven 依赖配置 <project xmlns="http://maven.apache.org/PO ...

  3. java前端长连接框架_Java中Spring Boot+Socket实现与html页面的长连接实例详解

    Spring Boot+Socket实现与html页面的长连接,客户端给服务器端发消息,服务器给客户端轮询发送消息,附案例源码 功能介绍 客户端给所有在线用户发送消息客户端给指定在线用户发送消息服务器 ...

  4. Java NIO SocketChannel+Buffer+Selector 详解(含多人聊天室实例)

    一.Java NIO 的核心组件 Java NIO的核心组件包括:Channel(通道),Buffer(缓冲区),Selector(选择器),其中Channel和Buffer比较好理解  简单来说 N ...

  5. Socket网络编程学习笔记 (10)简易聊天室案例

    1. 聊天室数据传输设计 必要条件:客户端.服务器 必要约束:数据传输协议 原理:服务器监听消息来源.客户端链接服务器并发送消息到服务器 1.1 客户端.服务器数据交互 client 发送消息到服务器 ...

  6. socket.io java 点对点_netty-socket.io点对点通讯和聊天室通讯

    netty-socketio是基于netty的socket.io服务实现,可以无缝对接前端使用的socketio-client.js. 相对于javaee的原生websocket支持(@serverE ...

  7. 【网络编程知识】使用Socket通信,做一个简单的多人聊天室

  8. java nio socket长连接_netty学习实战—实现websocket长连接和socket之间进程通信

    netty学习-实现websocket长连接和socket之间通信 最近正在学习netty,跟着教程写了一个基于WebSocket的网页聊天室,对netty有了一定的了解,现在正好项目使用到长连接,选 ...

  9. 【Netty】NIO 网络编程 聊天室案例

    文章目录 一. NIO 聊天室需求 二. NIO 聊天室 服务器端 代码分析 三. NIO 聊天室 客户端 代码分析 四. NIO 聊天室 服务器端 完整代码 五. NIO 聊天室 客户端 完整代码 ...

  10. Express+Socket.IO 实现简易聊天室

    代码地址如下: http://www.demodashi.com/demo/12477.html 闲暇之余研究了一下 Socket.io,搭建了一个简易版的聊天室,如有不对之处还望指正,先上效果图: ...

最新文章

  1. RadASM的测试工程!
  2. 「五大常用算法」一文图解分治算法和思想
  3. 如何理解 Objective-C Delegate
  4. java调c++代码_Java中调用C++代码的实现 | 学步园
  5. java命令模式返回值_JAVA 设计模式 命令模式
  6. centos调整页面大小_这2种方法都能调整PDF文档的纸张大小
  7. 对“善于提问,主动解决问题”的程序员的吐槽
  8. Python+sklearn决策树算法使用入门
  9. HTTP Basic Authentication验证WCF Data Service
  10. python ca模块_python学习之模块-模块(五)
  11. FUSE—用户空间文件系统
  12. java安装教程详细
  13. 基本文件上传漏洞攻击实验
  14. Libcef源码下载与编译
  15. webview出现图片加载异常 Mixed Content: The page at 'https
  16. 【问题解决】电脑连接自家WiFi不能进B站而手机能进
  17. SAP Archiving (归档)
  18. 生活模拟像素游戏地图农场钓鱼伐木Gamemaker Studio tiled素材
  19. 给小伙伴们的json数据
  20. TexturePacker序列号申请

热门文章

  1. 范围变更管控案例_项目变更管理案例.doc
  2. 局域网打印机共享怎么设置_一篇文章弄懂局域网打印机共享
  3. glide 设置宽高_glide如何设置图片大小
  4. Where子句常用查询条件
  5. 佛系 vue -01
  6. java定时器 实现2秒打印一次,1秒打印一次,循环往复
  7. 数据库面试题:Redis如何保证数据一致性
  8. mysql中tab键作用_MySQL小技巧-mysql命令 tab键数据表名、字段名补全功能
  9. Barrett And Montgomery of Polynomials
  10. 汇编_stack的使用