項目正好用到了即時通信功能,因而研究到了webSocket技術,後來發現了能夠在web、[Android]、[iOS]上同時使用的解決方案,那就是SocketIO。其實現原理啥的不作介紹了,直接貼上IOS項目可能會用到的一些資源。android
首先是官網:http://socket.io/ 這個你們都不會陌生吧~~ios
一、官方推薦的Android項目:http://socket.io/blog/native-socket-io-and-android/git
github上的相應地址爲:https://github.com/nkzawa/socket.io-android-chatgithub
二、官方推薦的IOS--Swift項目:http://socket.io/blog/socket-io-on-ios/web
github上的相應地址爲:https://github.com/socketio/socket.io-client-swiftswift
另外若是你須要oc版本的,能夠參考這裏:socket.io v0.7.2 — 0.9.x for iOS and OS X https://github.com/pkyeck/socket.IO-objc服務器
三、官方推薦的C++項目:http://socket.io/blog/socket-io-cpp/微信
github上的相應地址爲:https://github.com/socketio/socket.io-client-cppwebsocket
另外還有一個匿名的聊天室可讓你測試用:http://chat.socket.io/
// 關於配置的那些坑 及 WebSocket開發的原理框架
因爲IOS端官網只有介紹Swift的代碼,若是須要使用到OC版就須要在github下載非官方的版本,在與後臺的各類折騰中,終於發現非官方的OC版本配置不兼容後臺的需求,從新換了Swift官方版本才行,在OC項目中橋接Swift文件便可。
後臺採用workman開源推送機制,將消息即時發送到客戶端,原理和WebViewJavascriptBridge相似,據瞭解微信也是使用這種機制,只是框架可能有所不一樣,因爲後臺是開源服務器,所開發的難度並不大,只是時間成本的問題;
// 在使用key值時,須要與後臺進行對應配置,
// 以下是指發送消息 根據「group chat」 key值去指向服務器所對應的方法,將數據傳遞過去
socket.on("group chat") { (dataArray, socketAck) -> Void in var messageDictionary = [String: AnyObject]() print("group chat dataArray = %@",dataArray) let messageDict = dataArray[0]; messageDictionary["username"] = messageDict["username"] messageDictionary["message"] = messageDict["message"] print("messageDictionary = %@",messageDictionary) completionHandler(messageInfo: messageDictionary) }
// 以下是監測服務器的通知 根據「disconnect」 key值去調用所須要處理的對應方法便可
在配置的使用過程當中,採用統一形式的回調Block形式便可,方法很是簡潔,有問題歡迎留言