socket 連接
1.即時(shí)通訊最大的特點(diǎn)就是實(shí)時(shí)性,基本感覺(jué)不到延時(shí)或是掉線,所以必須對(duì)socket的連接進(jìn)行監(jiān)視與檢測(cè)桥狡,在斷線時(shí)進(jìn)行重新連接,如果用戶退出登錄妓局,要將socket手動(dòng)關(guān)閉总放,否則對(duì)服務(wù)器會(huì)造成一定的負(fù)荷。
一般來(lái)說(shuō)好爬,一個(gè)用戶(對(duì)于ios來(lái)說(shuō)也就是我們的項(xiàng)目中)只能有一個(gè)正在連接的socket局雄,所以這個(gè)socket變量必須是全局的,這里可以考慮使用單例或是AppDelegate進(jìn)行數(shù)據(jù)共享存炮,首選使用單例炬搭。如果對(duì)一個(gè)已經(jīng)連接的socket對(duì)象再次進(jìn)行連接操作,會(huì)拋出異常(不可對(duì)已經(jīng)連接的socket進(jìn)行連接)程序崩潰穆桂,所以在連接socket之前要對(duì)socket對(duì)象的連接狀態(tài)進(jìn)行判斷宫盔。
使用socket進(jìn)行即時(shí)通訊還有一個(gè)必須的操作,即對(duì)服務(wù)器發(fā)送心跳包享完,每隔一段時(shí)間對(duì)服務(wù)器發(fā)送長(zhǎng)連接指令(指令不唯一灼芭,由服務(wù)器端指定,包括使用socket發(fā)送消息般又,發(fā)送的數(shù)據(jù)和格式都是由服務(wù)器指定)彼绷,如果沒(méi)有收到服務(wù)器的返回消息,AsyncSocket會(huì)得到失去連接的消息茴迁,我們可以在失去連接的回調(diào)方法里進(jìn)行重新連接寄悯。
2.使用socket進(jìn)行即時(shí)通訊還有一個(gè)必須的操作,即對(duì)服務(wù)器發(fā)送心跳包堕义,每隔一段時(shí)間對(duì)服務(wù)器發(fā)送長(zhǎng)連接指令(指令不唯一猜旬,由服務(wù)器端指定,包括使用socket發(fā)送消息,發(fā)送的數(shù)據(jù)和格式都是由服務(wù)器指定)洒擦,如果沒(méi)有收到服務(wù)器的返回消息椿争,AsyncSocket會(huì)得到失去連接的消息,我們可以在失去連接的回調(diào)方法里進(jìn)行重新連接秘遏。