跳转到内容

网络通信

在我们的项目开发过程中,除了单机不需要使用网络通信,开发一个网络项目,难免要处理网络通信。本章将讲解LayaAir的网络通信部分。通常我们使用 Http 和WebSocket 这两种网络通信方式。首先我们来对比一下两者的区别:

  • HTTP

优点:协议成熟,应用广泛,基于TCP/IP,拥有TCP的可靠性,研发成本低,开发快速,被广泛支持,如nginx/apache/tomcat等。

缺点:无状态无连接,只有PULL模式,不支持PUSH,数据报文较大,每次请求都要带上所有的头信息。

特性:无状态,无连接(短连接),支持C/S模式,适用于文本传输,但也可以传输其他类型的数据,如图片、视频等。

  • WebSocket

优点:协议较新,但已趋于成熟,基于TCP/IP,拥有TCP的可靠性,数据报文较小,只有在建立连接时的握手阶段需要较大的头信息,之后的数据交换阶段头信息较小,面向连接,有状态协议,支持服务器主动推送数据(PUSH模式)。

缺点:WebSocket 是应用层协议,虽然数据包较简洁,但相比于TCP/IP协议,其数据包头部信息相对较大,对于非常小的数据包,这可能会导致一些额外的流量消耗。此外,由于需要维持连接,可能会占用更多的服务器资源。

特性:有状态,面向连接,数据报头较小,支持全双工通信,适用于需要实时通信的应用。

通过以上对协议特性分析,建议:

1,对于弱联网类游戏,比如消除类的,卡牌类的,可以直接HTTP协议,考虑安全的话直接HTTPS,或者对内容体做对称加密;

2,对于实时性,交互性要求较高,且team有过相关经验,可以优先选择websocket协议,比如SLG和RPG等大型网络游戏。

关于这两种方式的具体使用介绍,可以查看以下两篇文档

本文更新于