本文解决如下几个问题:
1.什么是长连接,什么是短连接
2.在什么情况下,游戏使用长连接或是短连接
3.在使用短连接时,该采用何种网络数据的收发方式
4.在短连接时是否采用http协议
0.起因
前段时间,看到一个开源的Unity客户端架构,在处理网络层时,该架构采用的方式如下:
var response = await session.Call(request)
该方式采用了协程,发送一个请求协议,再等待一个返回协议,这是一种典型的请求-响应的协议设计,类似的如Http协议也是这类设计。但游戏制作毕竟不是网页响应,初看这段代码的时候,对于这个设计框架的作者的思路,表示了怀疑。举例说明,如果玩家登录游戏到得到角色列表这一流程,按着这种请求响应的设计思路,该流程如下:
发送一个登录协议->收到登录协议的返回,如果结果无误->发送角色请求协议->收到角色请求协议的返回数据整个流程在网络层产生了四次数据传输。但其实就性能与效率而言,这不是一个好的设计方案。在设计协议时,我们一般的方案如下:
发送一个登录协议