`
shiwujie
  • 浏览: 4369 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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();' onclick='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();' onclick='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 swf
   var 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);
   else
    alert("已与服务器连接!");
  }
  cmt.post = function(data){
   if(cmt.isconnected())
    cmt.getCmt().post(data);
   else
    alert("与服务器未连接!");
  }  
 })(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);

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

分享到:
评论
2 楼 shiwujie 2011-10-08  
gameserver要单独跑是一个服务器,其它的文件要部署在web应用下
1 楼 yangmingjiayou 2011-09-14  
给一个工程 怎么跑不起来 里面有也没有js文件

相关推荐

    Mina+Socket通信

    文件"MinaSocket"可能包含了实现上述功能的详细代码,包括服务端的Acceptor配置、过滤器设置、事件处理器编写,以及客户端的Socket连接、数据发送和接收等。通过阅读和理解这些代码,你可以更好地掌握Mina与Socket...

    一般Socket客户端与Mina NIO Socket客户端对比示例

    在IT行业中,网络编程是不可或缺的一部分,而Socket通信则是实现网络连接的基础。本文将通过一个对比实例,探讨一般Socket客户端与Mina NIO (Non-blocking I/O) Socket客户端的差异和特点,帮助开发者理解这两种技术...

    网络编程(socket、NIO、mina)---demo

    在这个"网络编程(socket、NIO、mina)---demo"的主题中,我们将深入探讨三个关键概念:Socket编程、非阻塞I/O(Non-blocking I/O,简称NIO)以及Apache Mina框架。这些技术广泛应用于构建高性能、高并发的网络应用...

    Socket长连接+心跳包+发送读取

    Socket长连接是网络编程中的重要概念,主要用于保持客户端与服务器之间的持续通信状态,避免每次通信都需要重新建立连接的开销。在长连接中,一旦连接建立成功,就会保持该连接,直到某一方主动断开或者因为网络问题...

    java NIO socket聊天室

    使用NIO socket不需要多线程来处理多个连接的请求,效率非常高 可以作为NIO socket入门的例子,Reactor模式,重点理解key.attach, jar文件里包含了源代码 1,运行server.bat启动服务器,可以打开编辑,修改端口号 ...

    基于 MINA 的 TLS/SSL NIO Socket 实现(二)

    在本篇博文中,我们将深入探讨如何利用Apache MINA库实现基于TLS/SSL的NIO(非阻塞I/O)Socket通信。MINA是一个高度可扩展的网络应用框架,广泛用于构建高性能、高并发的网络应用程序,如服务器端的TCP和UDP服务。...

    Java实现Socket长连接和短连接

    - **关闭策略**:合理设置超时时间,当连接长时间无数据传输时,可以考虑关闭连接以释放资源。 **4. 应用场景** 短连接适合一次性、低延迟、资源有限的场景,如网页浏览。而长连接适合实时性强、需要持续交互的...

    Android-MinaSocket一款基于Mina的Socket长连接库

    **Android-MinaSocket:基于Mina的高效Socket长连接库** 在移动应用开发中,尤其是Android平台,实时性与稳定性是许多应用场景的核心需求,比如在线游戏、即时通讯、物联网设备等。在这种背景下,使用Socket进行长...

    java NIO socket聊天

    `Socket`在NIO中的实现是`SocketChannel`,它代表了网络上的一个连接。`ServerSocketChannel`则用于监听客户端的连接请求。通过`ServerSocketChannel`的`accept()`方法,服务器可以接收新的客户端连接,然后将其注册...

    socket通信,mina长连接通信

    总结来说,Socket通信是网络编程的基础,而MINA长连接则是Socket通信的一种优化实现,尤其适合需要高效处理大量并发连接和实时数据交换的场景。在实际开发中,你可以根据项目需求选择适合的技术栈,例如使用MINA来...

    Mina NIO Socket

    在Java世界中,网络编程是一个不可或缺的部分,而Mina NIO(Non-blocking I/O)Socket库则是Java开发者实现高性能、高并发网络服务的重要工具。本文将深入探讨Mina NIO Socket的核心概念、工作原理以及在实际项目中...

    NioSocket,包括server端和client端

    NioSocket是一个基于Java NIO(非阻塞I/O)技术实现的网络通信框架,它包含服务器端(Server)和客户端(Client)两部分。在Java编程中,NIO(New Input/Output)提供了一种不同于传统IO模型的I/O操作方式,其核心...

    基于nio的简易聊天室

    本项目"基于nio的简易聊天室"旨在通过NIO技术实现一个简单的聊天室服务端和客户端,其特点是有图形用户界面(GUI)供用户交互。 NIO的核心组件包括通道(Channels)、缓冲区(Buffers)和选择器(Selectors)。在这...

    java nio 实现socket

    ### Java NIO 实现Socket通信详解 #### 一、NIO与传统IO的区别及优势 在探讨如何使用Java NIO实现Socket通信之前,我们需要先理解NIO(Non-blocking I/O,非阻塞I/O)与传统阻塞I/O之间的区别。 **传统阻塞I/O...

    Java NIO Socket基本

    NIO在Java 1.4版本引入,其设计目标是提供一种更高效、更灵活的I/O操作方式,特别适合处理大量并发连接的场景,如服务器端编程。在NIO中,我们不再像BIO那样等待一个操作完成,而是通过选择器(Selector)监控多个...

    Java springboot 整合mina 框架,nio通讯基础教程,mina框架基础教程.zip

    Java SpringBoot 整合Mina框架,涉及到的核心技术主要包括Java NIO(非阻塞I/O)、Mina框架以及SpringBoot的集成应用。本教程旨在帮助开发者深入理解和掌握这些技术,并提供了一个可直接使用的基础平台框架。 Java ...

    java socketNIO 实现多客户端聊天室 代码

    利用socketNIO实现的多客户端聊天室,非阻塞式IO,java代码编写,使用方法:先启动服务端代码再启动客户端代码,可启动多个客户端代码。若使用多个电脑启动客户端,需在客户端代码中更改一下ip地址。

    MINA长连接框架实现通讯

    综上所述,MINA长连接框架在实现服务器与Android客户端通讯时,涉及到网络编程、数据传输协议、异常处理、过滤器机制、长连接维护等多个技术要点,开发者需要根据实际需求进行合理的架构设计和优化。通过MINA提供的...

    niosocket及其开源框架MINA学习总结收集.pdf

    NIO (Non-blocking Input/Output) 是Java中的一种I/O模型,与传统的 blocking I/O 相比,它提供了更高效的数据处理...对于需要处理大量并发连接的网络应用,如聊天服务器、游戏服务器等,NIO 和 MINA 是理想的选择。

Global site tag (gtag.js) - Google Analytics