基于Blue框架开发的flash聊天室

原创 2007年10月14日 12:15:00
如蒙转载,请注明文章出处:www.sujun.org   作者:弃天笑

软件名称:Flash聊天室
开发平台:Flash 8 + JAVA
采用框架:Blue框架
开发者:弃天笑
时间:2007年2月15号

了解了框架的一些基础,那么就综合起来开发一些东西了。因为我也就做了这么个简单的flash聊天室。
实现了公聊,私聊,以及表情的一些基本功能,纯粹是自己信手写的,花了几个小时,自己也想不到这么
快,主要是服务器那边只写一两个类就可以了。
这个聊天是提供了演示图片和源代码。下面是图片,如果觉得有兴趣就可以往下看代码了。
登陆界面


用户聊天界面







那么先做这里是代码部分,我只是重点讲一部分,一些连接服务器什么的,请大家参考
《Blue框架的基本教程》里的几个连续教程
先看下服务端的代码吧:
ClientMap.java,这个类主要是存放了一个用户列表,方便在其他地方获取
import java.util.*;
import org.sujun.blue.remote.Client;

public class ClientMap 
{
    private static Map map = new HashMap();

    public static void setMap(Map m) 
    {
        map = m;
    }
    
    public static Map getMap() 
    {
        return map;
    }

    public static Client getClient(String key)
    {
        return (Client)map.get(key);
    }
}

接下来是主类啦
ClientResponse.java这个类主要是存放了被客户端调用的方法,同时也负起了调用客户端方法的责任
/**
 * @(#).java
 * 
 * @author  soda  E-mail:sujun10@21cn.com
 * @version  1.0
 * <br>Copyright (C), 2007 soda.C
 * <br>This program is protected by copyright laws.
 * <br>Program Name:FlashSyncServer
 * <br>Date:2007.1
 */
import org.sujun.blue.remote.Client;
import java.util.*;

public class ClientResponse 
{
    /**
     * 当用户说话时,该方法被客户端呼叫
     * @param    userName:用户名
     * @param    face:表情
     * @param    toUser:说话接受对象
     * @param    msg:说话内容
     * @param    flag:是否是私聊
     */
    public void userSpeak(String userName,String face,String toUser,String msg,boolean flag)
    {
        Map map = ClientMap.getMap();
        int len = map.size();
        if(len > 0)
        {
            if(flag)
            {
                msg = userName + "偷偷地对你说:" + msg;
                Client temp = (Client)ClientMap.getClient(toUser);
                //呼叫特定客户端更新聊天信息的方法
                temp.call("chat","updateInfo");
                temp.setParam(msg);
                temp.send();
            }
            else
            {
                msg = userName + face + "地对" + toUser + "说:" + msg;
                for(Iterator it = map.values().iterator(); it.hasNext();)
                {
                    Client temp = (Client)it.next();
                    //禁止给自己再次发信息
                    if(ClientMap.getClient(userName) != temp)
                    {
                        //呼叫所有客户端更新聊天信息的方法
                        temp.call("chat","updateInfo");
                        temp.setParam(msg);
                        temp.send();
                    }
                }
            }
        }
    }
}
代码说明得很清楚,服务端其实就是这么简单,就实现了公聊和私聊的功能,逻辑很清晰,代码注释也完全,这里我就不多说了。
接下来就看客户端的代码了
ClientServer.as这个是客户端开始代码,记录客户端一些初始的工作
import org.sujun.blue.net.ConnectJavaServer;
import soda.ServerResponse;
/**
 * 聊天系统核心类,初始化服务器需要的类
 * 这里用到了Blue框架的核心ConnectJavaServer类
 */
class soda.ClientServer
{
    private var chat:MovieClip;
    private var conn:ConnectJavaServer
    private var userName:String;
    
    public function ClientServer(chat:MovieClip,userName:String)
    {
        this.chat = chat;
        this.userName = userName;
        //添加自己登陆
        chat.updateList(userName);
        trace("ServerResponse:" + userName);
        var client:ServerResponse = new ServerResponse(chat);
        conn = ConnectJavaServer.getConnectJavaServer();
        //连接服务器
        conn.connect("localhost",5000,userName);
        //注册被服务器调用的类
        conn.addServerCall("chat",new ServerResponse(chat));
        userSpeak();
    }
    
    /**
     * 用户聊天信息初始化
     */
    private function userSpeak()
    {
        var par = this;
        chat.userSpeak = function(msg:String)
        {
            var obj:Object = new Object();
            if(this.getObjectText() == par.userName)
            {
                this.updateInfo("不能自己跟自己说!");
            }
            else if(this.getIsPrivate() && this.getObjectText() != "所有人")
            {
                par.conn.call("ClientResponse","userSpeak",obj,par.userName,this.getFaceText(),
                        this.getObjectText(),msg,true);
                this.updateInfo("你偷偷地对" + this.getObjectText() + "说:" + msg);
            }
            else
            {
                //呼叫服务器的userSpeak方法
                par.conn.call("ClientResponse","userSpeak",obj,par.userName,this.getFaceText(),
                        this.getObjectText(),msg,false);
                this.updateInfo("你" + this.getFaceText() + "地对" + this.getObjectText() + "说:" + msg);
            }
            //接受服务器返回的结果
            obj.onResult = function(msg:String)
            {
                //par.updateInfo(msg);
            }
        }
    }
}

ServerResponse.as这个类主要是存放了被服务器调用的方法
public function ServerResponse(chat:MovieClip)
    {
        this.chat = chat;
    }
    
    /**
     * 更新用户聊天信息
     */
    public function updateInfo(msg:String):Void
    {
        trace("更新用户信息了");
        chat.updateInfo(msg);
    }

    /**
     * 用户退出
     */
    public function exitUser(userName:String)
    {
        chat.exitUser(userName);
    }
    
    /**
     * 更新用户列表
     */
    public function updateList(userName:String):Void
    {
        chat.updateList(userName);
    }

还有一个是客户端界面的类,ChatInterface.as。大家可以自己看源代码,都是界面功能的代码

代码就帖到这里了,其实什么都没有说,聊天室的原理我想大家都很明白,如果有哪为读职不明白或者
想要解释聊天室的整个流程的,在后面更帖,我会抽个时间再作详细说明

聊天室源代码下载:Flash聊天室  
版权声明:本文为博主原创文章,转载必须声明出处和作者。地址:http://blog.csdn.net/sujun10 作者:弃天笑 https://blog.csdn.net/sujun10/article/details/1824005

基于SSH框架开发的在线聊天室

                            联系qq:2835777178项目介绍:      系统功能视频演示地址:点击打开链接:https://pan.baidu.com/s/1gg5...
  • myzczx
  • myzczx
  • 2018-02-20 09:40:37
  • 771

基于ssm框架搭建并整合redis和websocket做成的一个网络在线聊天室

  • 2018年03月08日 15:16
  • 129KB
  • 下载

java聊天室(ssh框架)

  • 2010年05月08日 10:06
  • 21.8MB
  • 下载

在线聊天系统ssh整合开发struts spring hibernate

  • 2009年07月26日 11:38
  • 57KB
  • 下载

一个基于red5+flash的网络聊天室red5Chat

前两天发现一个开源的基于red5+flash的聊天室软件red5Chat,于是想搭起来玩玩,没想到遇到一大堆问题。     首先到http://www.red5chat.com/下载源码red5ch...
  • gavinr
  • gavinr
  • 2012-02-18 11:35:43
  • 8882

flashchat聊天室

  • 2010年01月25日 15:08
  • 2.79MB
  • 下载

基于Blue框架开发的简单网游

  • 2009年05月30日 11:56
  • 1.26MB
  • 下载

Flash聊天室源代码

  • 2007年10月14日 12:21
  • 419KB
  • 下载

flash视频会议聊天源代码

  • 2014年03月09日 18:44
  • 3.6MB
  • 下载

Netty网络聊天室之基础网关搭建

最近在学习Netty框架,使用的学习教材是李林锋著的《Netty权威指南》。国内关于netty的书籍几乎没有,这本书算是比较好的入门资源了。我始终觉得,学习一个新的框架,除了研究框架的源代码之外,还应...
  • littleschemer
  • littleschemer
  • 2016-02-17 23:28:04
  • 11538
收藏助手
不良信息举报
您举报文章:基于Blue框架开发的flash聊天室
举报原因:
原因补充:

(最多只允许输入30个字)