问题描述
后台返回的是消息数组,有可能数量比较多,比如10几条,此时不做处理CocoaAsyncSocket
会把这条比较大的json数据自动分割成若干条,也就是说下面这个接受消息的方法调用了若干次,理论上应该调用一次
//MARK: 接收到消息
func socket(_ sock: GCDAsyncSocket, didRead data: Data, withTag tag: Int) {
...
}
解决方法
重新设置接受数据的最大值,比如maxLength为50000
// 写入数据成功 , 重新开启允许读取数据
func socket(_ sock: GCDAsyncSocket, didWriteDataWithTag tag: Int) {
beginReadDataTimeOut(timeOut: -1, tag: 0)
}
/// 开启接收数据
func beginReadDataTimeOut(timeOut:TimeInterval,tag:Int) {
chatSocket.readData(to: GCDAsyncSocket.lfData(), withTimeout:timeOut, maxLength: 50000, tag: tag)
}
网友评论