項目正好用到了即時通訊功能,於是研究到了webSocket技術,后來發現了可以在web、[Android]、[iOS]上同時使用的解決方案,那就是SocketIO。其實現原理啥的不做介紹了,直接貼上IOS項目可能會用到的一些資源。
首先是官網:http://socket.io/ 這個大家都不會陌生吧~~
1、官方推薦的Android項目:http://socket.io/blog/native-socket-io-and-android/
github上的相應地址為:https://github.com/nkzawa/socket.io-android-chat
2、官方推薦的IOS--Swift項目:http://socket.io/blog/socket-io-on-ios/
github上的相應地址為:https://github.com/socketio/socket.io-client-swift
另外如果你需要oc版本的,可以參考這里:socket.io v0.7.2 — 0.9.x for iOS and OS X https://github.com/pkyeck/socket.IO-objc
3、官方推薦的C++項目:http://socket.io/blog/socket-io-cpp/
github上的相應地址為:https://github.com/socketio/socket.io-client-cpp
另外還有一個匿名的聊天室可以讓你測試用: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形式即可,方法非常簡潔,有問題歡迎留言
參考鏈接:
2.http://www.imooc.com/article/3453