既然服务端跟客户端使用了长连接通信,就要尽量维持这个长连接,因为建立连接比较慢;服务端一般会用数据库、缓存什么的来维护长连接,所以重建连接对服务端的开销也有影响。
IOS应用被挪到后台时,服务端不应该再发数据,因为即使发了应用也不会处理;那怎么告诉服务端说不能再发数据了? 粗暴的作法是IOS应用进入后台时立即关断长连接。
但这种做法在一种情况下不利:应用进入后台后可能又会很快被用户切回前台,这时又得重建长连接,用户体验会很差。
合适的作法是应用进入后台时发个报文给服务端,让它暂停发送;恢复到前台时再发个报文,让服务端恢复发送。