文章目录
概要
本文章对使用ArkTS实现APP与服务器长连接的实践经验进行了总结,希望能帮助到有需要的朋友。经过技术调研,我选择使用官方的TCPSocket来实现socket通信。
整体架构流程

技术名词解释
- Worker:Worker是与主线程并行的独立线程。创建Worker的线程称之为宿主线程,Worker自身的线程称之为Worker线程。Worker主要作用是为应用程序提供一个多线程的运行环境,可满足应用程序在执行过程中与宿主线程分离,在后台线程中运行一个脚本操作耗时操作,极大避免类似于计算密集型或高延迟的任务阻塞宿主线程的运行。
- 任务池(taskpool)作用是为应用程序提供一个多线程的运行环境,降低整体资源的消耗、提高系统的整体性能,且您无需关心线程实例的生命周期。您可以使用任务池API创建后台任务(Task),并对所创建的任务进行如任务执行、任务取消的操作。理论上您可以使用任务池API创建数量不受限制的任务,但是出于内存因素不建议您这样做。此外,不建议您在任务中执行阻塞操作,特别是无限期阻塞操作,长时间的阻塞操作占据工作线程,可能会阻塞其他任务调度,影响您的应用性能。当同一时间待执行的任务数量大于任务池工作线程数量,任务池会根据负载均衡机制进行扩容,增加工作线程数量,减少整体等待时长。同样,当执行的任务数量减少,工作线程数量大于执行任务数量,部分工作线程处于空闲状态,任务池会根据负载均衡机制进行缩容,减少工作线程数量。
技术细节
官方API已经为我们提供了Socket网络通信模块,用于提供数据传输的能力,支持TCPSocket、UDPSocket、WebSocket和TLSSocket。这里我们采用了TCPSocket来实现Socket通信。
小结
本章节简单介绍了我在实现Socket长链时的技术选择和整体架构,通过Worker、Task的联合使用,来实现数据的接收和解析,以及数据粘包和拆包问题的处理,下一章节我将结合具体的使用场景,来对架构细节进行讲解。