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

 static void Main(string[] args)
{
WebSocketServer appServer = new WebSocketServer(); if (!appServer.Setup()) //端口
{
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 > )
{
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)
{
}

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

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

    遇到一个想做的功能,但是实现不了,核心原因是因为对U3D的3D数学概念没有灵活吃透.故再次系统学习之—第三次学习3D数学. 本次,希望实现的功能很简单: 如在小地图中,希望可以动态画出Player当前 ...

  2. Unity网络斗地主 服务端

    Unity网络斗地主  服务端 @by梦想之家2工作室 阿龙 已经做好了服务器框架,并且能实现服务器给客户端分牌的问题!

  3. Unity 网络斗地主 判断牌的类型

    Unity 网络斗地主  牌的类型 web版本演示地址:   http://www.dreamhome666.com/Desktop.html 在上个版本中,下面的角色在牌的后面,可以将角色做为一个P ...

  4. Unity 网络斗地主 牌的一些算法

    Unity 网络斗地主  牌的一些算法 在这儿说一下,我的项目是用svn的方式,上传在https://v2.svnspot.com/18666451713.doudizhu这个svn上,大家可以下载T ...

  5. [Unity Shader笔记]渲染路径--Forward渲染路径

    [Unity Shader笔记]渲染路径--Forward渲染路径 (2014-04-22 20:08:25) 转载▼ 标签: shader unity renderingpath forward 游 ...

  6. 实现一个简易的Unity网络同步引擎——netgo

    实现一个简易的Unity网络同步引擎Netgo 目前GOLANG有大行其道的趋势,尤其是在网络编程方面.因为和c/c++比较起来,虽然GC占用了一部分机器性能,但是出错概率小了,开发效率大大提升,而且 ...

  7. 网络笔记-unity 实现AOP

    该文章来自网络,如有冒犯,请及时联系! 前提 引用以下文件 Microsoft.Practices.ObjectBuilder2.dll Microsoft.Practices.Unity.dll M ...

  8. 开源项目SuperSocket的学习笔记

    近几日想在一个项目中引进一个Socket Server,用来接收客户端发送的命令消息并根据具体的业务逻辑对消息进行处理,然后转发给其它在线的客户端.因为以前在博客园关注过江大渔开源的SuperSock ...

  9. unity入门笔记

    我于2010年4月1日硕士毕业加入完美时空, 至今5年整.刚刚从一家公司的微端(就是端游技术+页游思想, 具体点就是c++开发, directX渲染, 资源采取所需才会下载)项目的前端主程职位离职, ...

随机推荐

  1. hellobruce

  2. HDU 2037 今年暑假不AC(贪心)

    今年暑假不AC Problem Description “今年暑假不AC?”“是的.”“那你干什么呢?”“看世界杯呀,笨蛋!”“@#$%^&*%...” 确实如此,世界杯来了,球迷的节日也来了 ...

  3. PHP中使用CURL(六)

    curl常用的几个例子 1.抓取无访问控制文件 <?php $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, "http://local ...

  4. hdu 1408 盐水的故事

    Problem Description 挂盐水的时候,如果滴起来有规律,先是滴一滴,停一下:然后滴二滴,停一下:再滴三滴,停一下...,现在有一个问题:这瓶盐水一共有VUL毫升,每一滴是D毫升,每一滴 ...

  5. GDI+ 图片转存

    摘自MSDN,其中 GetEncoderClsid 第一个参数可为 L"image/bmp" L"image/jpeg" L"image/gif&qu ...

  6. Python 文本处理的应用

    最近根据公司运营部需求要对mongo数据库中的相关信息进行统计,本人一般喜欢将数据库服务器中相关的数据导出来(PS:其一由于Mongo为Nosql,在涉及关联表时不好处理,其二是因为虽然为测试环境,但 ...

  7. 找斐波那契数列中的第N个数——递归与函数自调用算法

    题目描述 Description 用递归的方法求斐波那契数列中的第N个数 输入输出格式 Input/output 输入格式:一行,一个正整数n输出格式: 一行,一个数,表示斐波那契数列中的第N个数  ...

  8. genymotion模拟器配置Genymotion-ARM-Translation 兼容包

    前提是你的adb的环境已经配置正确,不知道怎么配置的可参考http://jingyan.baidu.com/article/17bd8e52f514d985ab2bb800.html 如果还不成功的话 ...

  9. JQ和其他框架一起使用方法

    时下,越来越多的javascripe框架不断崛起,同时开源网站系统也之间增多.网站建设过程中当使用一些开源的网站程序时,免不了会在javascript上产生冲突.也许网站的开发者习惯使用jQuery, ...

  10. C Runtime Library来历, API, MFC, ATL关系

    首先说明,我google了半天,想找到英文的关于这个资料,但是实在找不到,只好转载国人的讨论. CRT原先是指Microsoft开发的C Runtime Library,用于操作系统的开发及运行.后来 ...