学习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. 广播与P2P通道(下) -- 方案实现

    在广播与P2P通道(上) -- 问题与方案 一文中,我们已经找到了最优的模型,即将广播与P2P通道相结合的方案,这样能使服务器的带宽消耗降到最低,最大节省服务器的宽带支出.当然,如果从零开始实现这种方 ...

  2. .Net Core 上传图片

    /// <summary> /// 图片上传并存入数据库 /// </summary> /// <returns></returns> public J ...

  3. SqlServer 汉字转换拼音首字母函数

    CREATE function [dbo].[Func_GetPY](@str nvarchar(4000))returns nvarchar(4000)asbegin set @str=RTRIM( ...

  4. chapter9_4 非抢占式的多线程

    协同程序与常规的多线程不同之处:协同程序是非抢占式的. 当一个协同程序运行时,是无法从外部停止它的.只有当协同程序显式地调用yield时,它才会停止. 当不存在抢先时,编程会变得简单很多,无须为同步的 ...

  5. VMware 下的Linux系统远程连接putty

    ifconfig查看ip地址 虚拟网卡需要自己新建  nat8 putty不能显示中文的解决办法 http://jingyan.baidu.com/article/5552ef47df8a97518f ...

  6. 2015 ACM/ICPC Asia Regional Shanghai Online

    1001 Puzzled Elena 1002 Antonidas 1003 Typewriter 1004 Count the Grid 1005 Code Formatting 1006 Ther ...

  7. ***C - I love sneakers!(动态规划,分组背包)

    C - I love sneakers! Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64 ...

  8. android.telephony.SmsManager 短信笔记

    android 几种发送短信的方法 http://www.oschina.net/question/163910_27409 <uses-permission android:name=&quo ...

  9. php自动运行

    <?php ignore_user_abort(); //即使Client断开(如关掉浏览器),PHP脚本也可以继续执行. set_time_limit(0); //执行时间为无限制,php默认 ...

  10. forEach用法介绍

    array.forEach(callback[, thisArg]) forEach() 方法让数组的每一项都执行一次给定的函数. callback在数组每一项上执行的函数,接收三个参数: curre ...