1. 程式人生 > >2022cm網站最新地址你懂的

2022cm網站最新地址你懂的

網站

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網站最新地址你懂的