1、連接失敗,錯誤信息: ?Error Domain=NSPOSIXErrorDomain Code=61 "Connection refused" UserInfo={_kCFStreamErrorCodeKey=61, _kCFStreamErrorDomainKey=1}
解析:61錯誤是:服務器端口沒打開
解決辦法:檢查服務器是否開啟端口。若服務器使用的是別人的服務器,使用各種抓包軟件抓壹下是否在連接websocket前使用post或者get方法請求壹遍,模擬壹下發送的參數,看看是否將其端口開啟。
2、連接成功,立刻斷開,斷開信息: code:1001 reason :Stream end encountered wasclean:0
解析:1001,表示“離開”(going away),例如服務器關閉或瀏覽器導航到其他頁面
解決辦法:檢查socket初始化方法,與socket協議進行比較(抓包連接情況),使用
- (id)initWithURLRequest:(NSURLRequest*)request protocols:(NSArray*)protocols allowsUntrustedSSLCertificates:(BOOL)allowsUntrustedSSLCertificates; 方法初始化socket對象。在protocols數組中裝著協議內容,如:_protocolsArray = @[@"XXX"]; 其中,XXX為抓包出來的protocol內容,如圖所示:
3、連接成功,有收到心跳信息,然後斷開,斷開信息: code:1001 reason :Stream end encountered wasclean:0
解析:1001,離開。在收到心跳包的情況下,出現斷開,這種情況只有服務器發送心跳包給妳,妳沒有回復服務器,服務器默認妳離開了。
解決方法:回復心跳包給服務器,心跳包壹問壹答的對話方式保持socket連接。
至此,前兩個小問題都解決好了,這兩個小問題卡了我快壹周的時間,記錄壹下。
參考文檔: WebSocket關閉連接
WebSocket_API的使用