服务端是以socket请求为单位建立线程并响应的,不是以客户端登录为基础的。每一个大数据包都需要额外的socket和线程来处理以免阻塞。
服务端消息循环

注意,数据包大小分开接收的工作在创建socket的时候已经完成,大数据包的socket中的第一个消息总是大数据包请求,并且socket接受完大数据包后应当关闭,大数据包转发或持久化之后该线程也应当立即关闭,因为每个大数据包对应一个线程,该线程不需要等待其他的消息。
服务端发送消息
服务端发送的消息可以是对请求的回复、一般实体消息、大数据包消息和提示。此处的发送消息是指接收到消息后立即转发或持久化的过程。对于因为接收方不在线而不能转发的消息应当持久化,并在接收方登录时转发。
在及时转发的情况下,大数据包就在次socket和线程中发送,不会阻塞主socket。若是要在接收方登录的时候向其发送已持久化的消息,则在主socket中为大数据包创建“请接收大数据包”的消息并发送,由客户端发起新的socket并向服务端发来“请发送xxx大数据包”的消息后服务端在该socket中发送该大数据包。
