学习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. java增加时间

    一个简单的东西. 示例如下: /** * 增加时间 * @param oldDate 老时间 * @param addtime 增加的时间 * @return */ public Date addDa ...

  2. Linux Root密码忘记怎么办?用Vultr vps教程演示重置root密码

    使用vultr免费提供的snapshots功能,可以轻松备份vps镜像,通常会碰到一个问题:恢复镜像后,vps的root密码失效了.正常情况下,root密码是镜像文件里的root密码,在某些情况下,由 ...

  3. 高精度运算专题3-乘法运算(The multiplication operation)

    这个专题呢,我就来讲讲高精度的乘法,下面是三个计算乘法的函数,第一个函数是char类型的,要对字符串进行数字转换,而第二个是两个int类型的数组,不用转换成数字,第三个则更为优化,用a数组-b数组放回 ...

  4. python--sum函数--sum(axis=1)

    平时用的sum应该是默认的axis=0 就是普通的相加,当加入axis=1以后就是将一个矩阵的每一行向量相加. 例如: >>>import numpy as np >>& ...

  5. 当用反射获取一个model,这个model里面字段有nullable的时候,获取字段真实类型

    Using Reflection to Determine whether an Type is Nullable And Get the underlying Type /// <summar ...

  6. Windows 小端存储

    小端->高高低低(高位存在高地址,低位存在低地址)

  7. gridControl 中CellValueChanged,ShowingEditor,CustomDrawCell的用法

    private void gridView1_RowCellStyle(object sender, DevExpress.XtraGrid.Views.Grid.RowCellStyleEventA ...

  8. 10- python 网络爬虫分析

    Python 网络爬虫简单分析 import urllib2 response = urllib2.urlopen("http://www.baidu.com") print re ...

  9. ios随机数

    ios 随机数生成 字数612 阅读3037 评论1 喜欢15 最近一直使用随机数,为了以后方便查阅,总结一下: 在C中提供了rand().srand().random().arc4random()几 ...

  10. iOS自定制tabbar与系统的tabbar冲突,造成第一次点击各个item图片更换选中,第二次选中部分item图片不改变

    可以选择是使用自定制的还是系统的,如果使用自定制的,就使用以下方法即可隐藏系统的uitabbarButton,从而使item恢复正确 //隐藏UITabBarButton -(void)viewWil ...