
使用superwebsocket创建服务器
SuperSocket是一种重量轻、跨平台、可扩展的套接字服务器应用程序框架。websocket客户端
SuperWebSocket是一个纯WebSocket服务器的实现
WebSocket4Net是websocket客户端
SuperSocket.ClientEngine是.net客户端类库
从连接请求到Session的创建: 当客户端与Server端的Socket端口成功建立连接后,SuperSocket Server就将该连接视为一个Session,它代表了客户端与Server端的逻辑连接,所有基于连接的操作都在Session中进行处理,比如收发数据、开关连接等;
从二进制数据流到RequestInfo对象: 在SuperSocket中定义了两种对象,一种表示用户请求内容的RequestInfo实体类,每个来自客户端的请求都应该必须实例化成RequestInfo类型。但是网络中的二进制数据流如何映射成实体类呢?这就是Receive Filter的工作,将接收到的二进制数据转换成请求实例(RequestInfo),也就是在SuperSocket中通过Receive Filter进行协议解析,将数据流分割成一个个请求的实例对象。如果要实现自定义的协议很明显需要实现这两个东西,强悍的是SuperSocket已经内置了诸如结束符协议、固定数量分隔符协议、头部格式固定并且包含内容长度的协议等通用协议,对于我的项目已经绰绰有余了。websocket客户端
从RequestInfo对象到响应服务: SuperSocket将服务抽象成一个个Command,其提供服务的方式也就是根据RequestInfo去执行响应的Command,然后再通过session将数据发送给客户端。由此可见,每一个Command必须包含两个东西那就是Session与RequestInfo。通过这种封装方式,很清晰的划分了各种职责边界,使得开发起来很舒服、很高效,更难能可贵的是测试很便捷。
统管全局的AppServer对象: 前面分析了一个请求从发出到响应的整个流程,整个逻辑连接被视为一个AppSession,而AppServer就是管理Session对象的大Boss,是整个游戏的操控者。诸如Server的启动关闭,Session连接的管理(注册、注销、查询等),Receive Filter创建工厂的选择都是AppServer来实现的。总而言之一句话,这是AppServer的世界它做主。
SuperSocket的初步尝试
如果明白了上述流程,那么使用SuperSocket来开发就很简单了,再次梳理下相关的数据结构:
AppServer:选择管理的Session类型、选择Server能够接受的RequestInfo请求实体类型、选择将二进制字节流转换成RequestInfo实体对象的Receive Filter的构建工厂,有了这些基本内容,Server就可以工作了;
AppSesssion:Session只和数据流打交道,因此只需要选择相应的RequestInfo类型就可以,因为Session是运行在AppServer中的,所以此处的RequestInfo必须和AppServer选择的一致;
RecieveFilter:它用来将二进制流转换成相应的RequestInfo对象实体,说白了也就是协议解析,因此它需要选择RequestInfo对象类型,然后实现ResolveRequestInfo的功能即可;
Command:Server提供服务的方式,首先它需要通过Session与客户端进行交流,而交流的语言就是网络协议,也就是RequestInfo类型。
本文来自电脑杂谈,转载请注明本文网址:
http://www.pc-fly.com/a/ruanjian/article-37526-1.html
美国在叙利亚的拙败后的又一出恶作剧
德国总理将访华
要蛇打七寸