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渲染, 资源采取所需才会下载)项目的前端主程职位离职, ...
随机推荐
- iOS 通过颜色来生成一个纯色图片
//通过颜色来生成一个纯色图片- (UIImage *)buttonImageFromColor:(UIColor *)color{ CGRect rect = CGRectMake(0 ...
- Sersync同步过滤.svn文件夹
Sersync同步过滤.svn文件夹 <filter start="true"> <exclude expression="(.*).svn(.*)&q ...
- 自定义alert和confirm
var common = {}; common.showAlert = function (msg) { var html = "<div id='dialog_alert' clas ...
- NYOJ-915 +-字符串(贪心)
+-字符串 时间限制:1000 ms | 内存限制:65535 KB 难度:1 描述 Shiva得到了两个只有加号和减号的字符串,字串长度相同.Shiva一次可以把一个加号和它相邻的减号交换. ...
- svn地址如何更改
1.先进入平时放的更新文件的位置 2.然后右键 选中TortoiseSVN中的Relocate修改里面的完了之后输入账号和密码就好了当然你要记得密码和账号
- Class.forName和ClassLoader.loadClass的比较
文章出处:http://blog.csdn.net/wikijava/article/details/5576043 Class的装载分了三个阶段,loading,linking和initializi ...
- JSP之JavaBean
一.定义 1 JavaBean是一个遵循特定写法的Java类,它通常具有如下特点: 这个Java类必须具有一个无参的构造函数 属性必须私有化. 私有化的属性必须通过public类型的方法暴露给其它程序 ...
- 感知哈希算法的java实现
一.原理讲解 实现这种功能的关键技术叫做"感知哈希算法"(Perceptual Hash Algorithm), 意思是为图片生成一个指纹(字符串格式), 两张图片的指纹 ...
- linux中将程序加入到开机自动启动
如果将在linux中将命令或者程序设置为开机自动启动,只需要进入到将对应命令加入到/etc/rc.d/rc.local文件里即可,如下 打开文件,vi /etc/rc.d/rc.local #!/bi ...
- MVC中用 BundleCollection 压缩CSS时图片路径问题
MVC中有个专门提供JS和CSS压缩的类,BundleCollection,其实这个类也可以在asp.net中用, 关于BundleCollection类的详细推荐个地址:http://www.cnb ...