SuperSocket+unity 网络笔记

学习SuperSocket 必须要注意的 代码是

 static void Main(string[] args)
        {
            WebSocketServer appServer = new WebSocketServer();

            if (!appServer.Setup(2000)) //端口
            {
                Console.WriteLine("端口错误!");
                Console.ReadKey();
                return;
            }

            appServer.NewSessionConnected += new SessionHandler<WebSocketSession>(appServer_NewClientConnected);
            appServer.NewMessageReceived += new SessionHandler<WebSocketSession, string>(appServer_NewMessageReceived);
            appServer.SessionClosed += new SessionHandler<WebSocketSession, CloseReason>(appServer_SessionClosed); 

            if (!appServer.Start())
            {
                Console.WriteLine("启动错误");
                Console.ReadKey();
                return;
            }

            Console.WriteLine("服务器启动成功, 按 ‘q‘ 退出服务器!");
            while (Console.ReadKey().KeyChar != ‘q‘)
            {
                Console.WriteLine();
                continue;
            }
            appServer.Stop();
            Console.WriteLine();
            Console.WriteLine("服务器关闭");
            Console.ReadKey();
        }

学习 unity 通讯 必须注意的代码是

       // 服务器IP地址和端口号
        ServerAdress = "ws://192.168.1.104:2000/";
        websocket = new WebSocket(ServerAdress);
        websocket.Open();
    public void addlistenerSocket()
    {
        _SocketModel.websocket.Opened += new EventHandler(websocket_Opened);
        _SocketModel.websocket.Error += new EventHandler<ErrorEventArgs>(websocket_Error);
        _SocketModel.websocket.Closed += new EventHandler(websocket_Closed);
        _SocketModel.websocket.MessageReceived += new EventHandler<MessageReceivedEventArgs>(websocket_MessageReceived);
    } 
 //登录 发送监听
    private void websocket_Opened(object sender, EventArgs e)
    {
       JsonData message = new JsonData();
       message["Agreement"] = Agreement.user_no_return;
       message["username"] = _SocketModel.PlayName;
       _SocketModel.websocket.Send(message.ToJson());//这个是发到消息端
    }

    //关闭监听
    public virtual void websocket_Closed(object sender, EventArgs e)
    {
    }
    //接收监听
    public void websocket_MessageReceived(object sender, MessageReceivedEventArgs e)
    {
        JsonData jsontext = JsonMapper.ToObject(e.Message);  //转化成json格式数据
        string Agreements = jsontext["Agreement"].ToString();
        switch (Agreements)
        {
            case Agreement.user_offline_return://接收到用户下线通知
                user_offline_return(jsontext);
                break;
            case Agreement.user_chat_return://接收聊天信息
                user_chat_return(jsontext);
                break;
            case Agreement.user_battle_return://接收到对战通知
                user_battle_return(jsontext);
                break;
            case Agreement.user_information_return://接收到对方用户信息
                user_information_return(jsontext);
                break;
            case Agreement.user_trading_return://接收到用户交易信息
                user_trading_return(jsontext);
                break;
            case Agreement.user_trading_cancel_return://接收到用户交易信息取消
                user_trading_cancel_return(jsontext);
                break;
            case Agreement.user_trading_confirm_one_return://接收到用户交易信息 确认1
                user_trading_confirm_one_return(jsontext);
                break;
            case Agreement.user_trading_confirm_two_return://接收到用户交易信息 确认2
                user_trading_confirm_two_return(jsontext);
                break;
            case Agreement.user_trading_confirm_three_return://接收到用户交易信息 确认3
                user_trading_confirm_three_return(jsontext);
                break;
            case Agreement.user_trading_confirm_final_return://接收到用户交易信息 最后确认
                user_trading_confirm_final_return(jsontext);
                break;

            default: break;
        }
    }

    public virtual void user_offline_return(JsonData jsontext)
    {
    }
    public virtual void user_chat_return(JsonData jsontext)
    {
    }
    public virtual void user_battle_return(JsonData jsontext)
    {
    }
    public virtual void user_information_return(JsonData jsontext)
    {
    }
    public virtual void user_trading_return(JsonData jsontext)
    {
    }
    public virtual void user_trading_cancel_return(JsonData jsontext)
    {
    }
    public virtual void user_trading_confirm_one_return(JsonData jsontext)
    {
    }
    public virtual void user_trading_confirm_two_return(JsonData jsontext)
    {
    }
    public virtual void user_trading_confirm_three_return(JsonData jsontext)
    {
    }
    public virtual void user_trading_confirm_final_return(JsonData jsontext)
    {
    } 
    void Update()
    {
        if (JsonList.Count > 0)
        {
            JsonData mes = JsonList.Dequeue();
            SplitDisposal(mes);
        }
    }

    //服务端返回后,数据赋值这里处理
    void SplitDisposal(JsonData mes)
    {
        String Agreementstr = mes["Agreement"].ToString();
        switch (Agreementstr)
        {
            case Agreement.user_chat_return:

                print(mes["username"] + "=====" + mes["message"] + "---" + mes["for"]);
                break;

            default: break;

        }
    }

    //根据需要 调用以下方法
    public override void user_chat_return(JsonData jsontext)
    {
        base.user_chat_return(jsontext);//特殊字符提前处理
        print(jsontext["username"] + "=====" + jsontext["message"] + "---" + jsontext["for"]);
        JsonList.Enqueue(jsontext);

    }

    public override void user_battle_return(JsonData jsontext)
    {
    }
    public override void user_information_return(JsonData jsontext)
    {
    }
时间: 2024-12-24 13:54:20

SuperSocket+unity 网络笔记的相关文章

SuperSocket框架学习笔记4-SuperWebSocket---使用SubCommandBase

首先下载所需要的 DLL http://download.csdn.net/detail/wai2dance123/7389285 或者参见第2章  到SuperSocket官网下载 http://www.cnblogs.com/xmcrew/p/3747354.html 1,新建一个 .NET4.0 控制台应用程序 命名为 DiyServers 添加以下引用 将默认的Program.cs改名为  DiyServers.cs 并添加以下命名空间 2,写自己的DSession和DServer继承自

SuperSocket框架学习笔记3-构建Unity3D__WebSocket4Net客户端程序

确保上一节服务器程序运行没有问题,否则请仔细看上一节 新建一个Unity3D项目(我的Unity3D版本是4.2.0) 1,在Unity3D内新建一个文件夹命名 Plugin 将下载的 客户端: WebSocket4Net  客户端必备 http://websocket4net.codeplex.com/ WebSocket4Net.dll   这个DLL复制到 Unity3D里面刚才新建的 Plugin文件夹内(注意Unity不得使用中文) ----------- 查看Unity下面的状态面板

[Unity&#160;Shader笔记]渲染路径--Forward渲染路径

[Unity Shader笔记]渲染路径--Forward渲染路径 (2014-04-22 20:08:25) 转载▼ 标签: shader unity renderingpath forward 游戏 分类: UnityShader *ForwardBase.ForwardAdd的LightMode只能运行在Came为Forward.DeferredLighting的渲染模式下 *ForwardAdd这个Pass需要和ForwardBase一起使用,否则会被Unity忽视掉 * Forward

C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型

遇到一个想做的功能,但是实现不了,核心原因是因为对U3D的3D数学概念没有灵活吃透.故再次系统学习之—第三次学习3D数学. 本次,希望实现的功能很简单: 如在小地图中,希望可以动态画出Player当前的位置.z的朝向:用3条线.z轴正向.30°旋转.-30°旋转. 问题是:0点可以获得,P1点? P2点是未知的. 我尝试了2个小时,结果不竟如人意,少于沮丧. 不得不,再次花点时间系统的学习3D数学: 1 位移–向量和点: 点: 点和向量在数学上是一致的,实际生活中点的概念比较好理解,坐标点来定位

单机笔记更改为网络笔记

myBase 是一款用于分类管理自由格式资料的小型个人数据库软件, 有助于个人用户在( Linux/MacOSX/Windows )桌面电脑系统上实施文档.笔记.日记.图片和网页等知识内容的分类管理. 借助软件提供的各项功能,创建和维护一个专属于自己的个人知识库将变的非常容易. 与传统意义上的数据库软件不同,myBase 通过内置的富文本编辑器接受图文信息的输入,并按树形 列表分类保存,同时接受任意磁盘文件作为树形列表条目的附件. myBase 提供了更好的方式使知识/信息的捕获.编辑.组织.查

SuperSocket框架学习笔记1-启动服务器

SuperSocket 是一个轻量级的可扩展的 Socket 开发框架,可用来构建一个服务器端 Socket 程序,而无需了解如何使用 Socket,如何维护Socket连接,Socket是如何工作的.该项目使用纯 C# 开发,易于扩展和集成到已有的项目.只要你的已有系统是使用.NET开发的,你都能够使用 SuperSocket来轻易的开发出你需要的Socket应用程序来集成到你的现有系统之中. 下载地址:http://www.supersocket.net/ 1,新建一个控制台应用程序,.NE

C#程序员整理的Unity 3D笔记(二十):2D Toolkit之官方教程《Whack a Mole》

在上篇博客中,简单整理了一下Unity Native 2D功能:<C#程序员整理的Unity 3D笔记(十九):Unity 3D的Native 2D>. 本文开始学习2D商用比较广泛的2D Toolkit插件. 2D Toolkit插件在2D中的地位,犹如UI中NGUI对Unity GUI一样:虽然官方原生的2D还不错,但这是最近1年新版本才有的功能,2年前Unity 2D的王道还是得用插件的,故<2D Toolkit>就成了目前商业不错的选择. 在上周刚开始看的时候,就给自己提了

SuperSocket框架学习笔记2-构建SuperWebSocket服务器程序

SuperSocket框架学习笔记2-构建SuperWebSocket服务器程序 上一节简单介绍了 基本的SuperSocket服务器 这一节我们使用 SuperWebSocket构建一个 能与Unity3D通信的(Console控制台)服务器程序 嘎嘎 先下载   需要的  DLL类库 服务端: SuperSocket1.6.1 这个必备 http://www.supersocket.net/ SuperWebSocket 服务端必备 http://superwebsocket.codeple

Unity网络多玩家游戏开发教程第1章Unity自带网络功能

Unity网络多玩家游戏开发教程第1章Unity自带网络功能 Unity拥有大量的第三方插件,专门提供了对网络功能的支持.但是,大部分开发者第一次接触到的还是Unity自带的网络功能,也就是大家经常说到的Unity Networking API.这些API是借助于组件NetworkView发挥作用的,而它可以简化开发者大量的网络功能编码任务.本文选自<Unity网络多玩家游戏开发教程(大学霸内部资料)> NetworkView组件 在Unity中,NetworkView组件用于处理游戏在网络上