iOS 问答集合

iOS CocoaAsyncSocket收到一条消息被自动分割成

2018-04-21  本文已影响62人  船长_

问题描述
后台返回的是消息数组,有可能数量比较多,比如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)
}
上一篇下一篇

猜你喜欢

热点阅读