SuperSocket+unity 网络笔记
学习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 网络笔记的更多相关文章
- C#程序员整理的Unity 3D笔记(十):Unity3D的位移、旋转的3D数学模型
遇到一个想做的功能,但是实现不了,核心原因是因为对U3D的3D数学概念没有灵活吃透.故再次系统学习之—第三次学习3D数学. 本次,希望实现的功能很简单: 如在小地图中,希望可以动态画出Player当前 ...
- Unity网络斗地主 服务端
Unity网络斗地主 服务端 @by梦想之家2工作室 阿龙 已经做好了服务器框架,并且能实现服务器给客户端分牌的问题!
- Unity 网络斗地主 判断牌的类型
Unity 网络斗地主 牌的类型 web版本演示地址: http://www.dreamhome666.com/Desktop.html 在上个版本中,下面的角色在牌的后面,可以将角色做为一个P ...
- Unity 网络斗地主 牌的一些算法
Unity 网络斗地主 牌的一些算法 在这儿说一下,我的项目是用svn的方式,上传在https://v2.svnspot.com/18666451713.doudizhu这个svn上,大家可以下载T ...
- [Unity Shader笔记]渲染路径--Forward渲染路径
[Unity Shader笔记]渲染路径--Forward渲染路径 (2014-04-22 20:08:25) 转载▼ 标签: shader unity renderingpath forward 游 ...
- 实现一个简易的Unity网络同步引擎——netgo
实现一个简易的Unity网络同步引擎Netgo 目前GOLANG有大行其道的趋势,尤其是在网络编程方面.因为和c/c++比较起来,虽然GC占用了一部分机器性能,但是出错概率小了,开发效率大大提升,而且 ...
- 网络笔记-unity 实现AOP
该文章来自网络,如有冒犯,请及时联系! 前提 引用以下文件 Microsoft.Practices.ObjectBuilder2.dll Microsoft.Practices.Unity.dll M ...
- 开源项目SuperSocket的学习笔记
近几日想在一个项目中引进一个Socket Server,用来接收客户端发送的命令消息并根据具体的业务逻辑对消息进行处理,然后转发给其它在线的客户端.因为以前在博客园关注过江大渔开源的SuperSock ...
- unity入门笔记
我于2010年4月1日硕士毕业加入完美时空, 至今5年整.刚刚从一家公司的微端(就是端游技术+页游思想, 具体点就是c++开发, directX渲染, 资源采取所需才会下载)项目的前端主程职位离职, ...
随机推荐
- Excel教程(8) - 财务函数
ACCRINT 用途:返回定期付息有价证券的应计利息. 语法:ACCRINT(issue,first_interest, settlement, rate,par,frequency, basis) ...
- Gentoo安装详解(五)-- 安装X桌面环境
安装X桌面环境: 安装Xorg: 检测显卡信息: dmesg | grep video lspci | grep -i VGA 配置INPUT_DEVICE.VIDEO_CARDS变量: 在安装Xor ...
- A - 小彭玉的扫荡食堂计划
A - 小彭玉的扫荡食堂计划 Time Limit: 20000/10000MS (Java/Others) Memory Limit: 128000/64000KB (Java/Others) ...
- 运行指定路径下的exe
public void StartProcess(string name) { string exeFileName = "DataControl.exe"; string sta ...
- mongoDB7--游标
之前我们学习了"增删改查"四中语法和查询表达式的深入学习,我们已经掌握了一定的操作mongodb数据的能力,那么接下来我们就要考虑我们的操作的效率问题了.(1)游标介绍如果我们查询 ...
- 嵌套json
今天一个客户问怎样把表中相同键值对应的文本按照一定顺序拼接起来.如果使用SQL实现将非常麻烦,并且效率低下.GP4.1以后提供了一个函数array_agg可以方便快捷,高效的实现该功能 比如原始查询是 ...
- Python中exec的使用
>>>globals = {'x':7, .....: 'y':10, .....: 'names':['aa','bb','cc'] .....: } >>>lo ...
- POJ 2516 Minimum Cost
每个物品分开做最小费用最大流. #include<cstdio> #include<cstring> #include<cmath> #include<vec ...
- 【01-14】java ThreadLocal工具类
自定义ThreadLocal package concurrent; import java.util.HashMap; import java.util.Map; /** * @author alo ...
- VBS基础篇 - 对象(6) - Folder对象
VBS基础篇 - 对象(6) - Folder对象 描述:提供对文件所有属性的访问,从FSO对象的GetFile方法获得 使用Folder对象 要用Folder对象模型来编程必须先用FSO对象的G ...