FLEX提高篇---------FMS简易聊天室加强版

阅读更多

今天写了下简易聊天室的加强版 , 其实功能也十分有很 , 不过比前面提到的简易聊天室要智能了许多 , 这个聊天室的主要功能有以下 :

 

1.       同一用户不能重复登陆 , 否则服务端拒绝 ;

2.       可以得到聊天室里人员的列表 ;

3.       新用户上线提示 ;

4.       用户离线提示 ;

5.       发送文本消息 ;

6.       新用户上线 , 更新所有聊天室成员列表名单 ;

7.       用户离线 , 更新所有聊天室成员列表名单 ;

 

技术上并没有什么花样儿 , 还是如下几个 :

1.       客户端与服务端的建立连接 ;

2.       监听连接状态 ;

3.       客户端调用服务端函数 ;

4.       服务端调用客户端函数

 

先看看粗糙的效果图:

 

 

FLEX提高篇---------FMS简易聊天室加强版_第1张图片

 

 

 

 

 

再看看代码吧:

 

先看客户端的:

 



	
	
		0){
					loginName=userName.text;
					initApp();
				}
			}
			
			public function sendMessage():void{
				nc.call("sendMsg",null,loginName,msg.text);
				msg.text="";
			}
			
			
		]]>
	
	
		
			
			
		
		
		
			
			
		
			
			
				
				
			
		
	

	

 

 

还有一个用于绑定到客户端NetConnection的client类,供FMS调用:

 

 

package com.client
{
	import mx.controls.List;
	import mx.controls.TextArea;
	
	public class clientInvockObj
	{
		private var chatList:List;
		private var chatContent:TextArea;
		public function clientInvockObj(list:List,chatContent:TextArea)
		{
			this.chatList=list;
			this.chatContent=chatContent;
		}
		
		public function getUserList(userList:Array):void{
				chatList.dataProvider=userList;
			}
		
		public function getMsgInfo(msg:String):void{
			chatContent.text+=msg+"\n";
		}
	}
}
 

 

 

下面是FMS服务端的:

 

 

application.onAppStart=function(){
	trace("App started");
	this.chatMsgArray=new Array();
	this.userListArray=new Array();
}

application.onConnect=function(client,userName){
	trace(" try  connect ")
	if(checkOnline(userName)){
		this.rejectConnection(client);
		return;
	}
	this.acceptConnection(client);
	trace("connected");
	client.userName=userName;
	trace(userName);
	application.userListArray.push(userName);
	sendUserList();
	sendMsgToClient("欢迎 "+userName+"进入聊天室.");
	
	client.getMsg=function(){
		trace("response client");
		return application.chatMsgArray;
	}
	
	client.sendMsg=function(loginUser,msg){
		trace("ClientName:"+loginUser);
		var chatInfo=loginUser+"--说:"+msg+"\n";
		application.chatMsgArray.push(chatInfo);
		sendMsgToClient(chatInfo);
	}
}

application.onDisconnect=function(client){
	trace("用户:"+client.userName+"----下线.");
	removeLeftUser(client.userName);
	sendUserList();
	sendMsgToClient("用户:"+client.userName+"----下线.");
}

function removeLeftUser(userName){
	for(var i=0;i   
 

对不住大家,代码都没有写注释,因为跟我前面的那篇几乎一样,所以大家不明白可以参看前面的那篇.

 

 

  • FLEX提高篇---------FMS简易聊天室加强版_第2张图片
  • 大小: 94.2 KB
  • FLEX提高篇---------FMS简易聊天室加强版_第3张图片
  • 大小: 22.6 KB
  • 查看图片附件

你可能感兴趣的:(Flex,申诉,CSS,Flash,Socket)