2022cm網站最新地址你懂的
阿新 • • 發佈:2018-05-29
網站2022cm新地址 https://www.2022cma.com
這篇文章的內容其實很久之前就存在了,但是一直沒發出來。有朋友了解這方面的使用,其實不難,或許復雜的是業務邏輯方面如何合理的處理。代碼部分由 Swift 完成,建議大家可以多了解一下 Swift 強大的枚舉,我個人感覺是 Swift 中最強大的技術特點之一了。
[objc] view plain copy
import SocketIO
// MARK: - SocketIO 連接處理部分
class SocketIOTool {
static let shared = SocketIOTool()
fileprivate var socketManager: SocketManager!
fileprivate let server = apiEnv.scheme + "://\(apiEnv.baseURL):8888" /// 連接成功執行回調 typealias Completion = (() -> Void) private init () { } /// 開始連接服務器 func startReceive(driverID: String, cookieKey: String, success: Completion?) { // role - 1 乘客, 2 司機 let dict = ["user_id": driverID, "user_key": cookieKey, "platform": "ios", "role": "2"] let manager = SocketManager(socketURL: URL(string: server)!, config: [.log(false), .compress]) let socket = manager.defaultSocket socket.on(clientEvent: .connect) {data, ack in Log(">>>>>>>>>>>> socket connected") ack.with(["dachedriver-\(driverID)-received"]) // 應該是回應服務器握手 socket.emit("login", with: [dict]) // 向服務器發送事件 success?() } socket.on(clientEvent: .disconnect) { data, ack in Log(">>>>>>>>>>>> socket disconnected") } // 監聽所有事件 socket.onAny { event in Log("收到服務器事件:", event.event, event.items) if event.event == "error" { //StatusMSG.show("Socket連接錯誤:\(event.items?.description ?? "")", duration: 3, type: .error) Log("Socket連接錯誤:\(event.items?.description ?? "")") return } // 取出事件內容json字符串,轉換成字典 guard event.event == "new_msg", let jsonStr = event.items?.first as? String, let data = jsonStr.data(using: .utf8), let dict = (try? JSONSerialization.jsonObject(with: data, options: [])) as? [String: Any], let code = dict["code"] as? Int else { return } Log("事件code:", code) Log("事件內容:", dict) if let model = EventContent(code: code, dict: dict) { // 發出通知給外界 NotificationCenter.default.post(name: DJNotification.socketEvent.name, object: model) } } socket.connect() self.socketManager = manager } /// 斷開Socket服務器連接 func stopReceive() { socketManager.disconnect() } /// 斷開再重連 func reConnect() { if socketManager.status == .disconnected || socketManager.status == .notConnected { socketManager.reconnect() } }
}
2022cm網站最新地址你懂的