iOS SocketIO 走起

既然写完了WebSocket,那也就顺便把Socket.IO一起写了。

这里也涉及一个三方库

Socket.IO-Client-Swift

OC也有一个库,但是吧,比较古老。建议还是用 ↑

SIOSocket

由于OC那个太古老了,所以我就直接使用了swift (我的项目是混编的,原因是有个核心的三方库目前只有swift在迭代了,OC已经停更了,有时间我会写一篇关于那个地图SDK的文章)

不废话了,直接上代码

import UIKit
import SocketIO

@objc protocol ARCGSocketDelegate :NSObjectProtocol {
    // 连接成功
    func ARCGSocketDidConnect()
    // 断开
    func ARCGSocketDidDisconnect()
    // 收到消息
    func ARCGSocketDidReceiveMessage(_ message: String)
}


@objcMembers class ARCGSocketIO: NSObject {
    
    public var delegate: ARCGSocketDelegate?

    private var manager: SocketManager
    private var socket: SocketIOClient
    
    override init() {
        let userToken = ToolManager.aq_GetToken()
        manager = SocketManager(socketURL: URL(string: "wss://xxxxx")!,
                                config: [.log(true), .compress])
        socket = manager.defaultSocket
        super.init()
    }
    
    @objc func connect() {
        socket.on(clientEvent: .connect) { [weak self] _, _ in
            self?.delegate?.ARCGSocketDidConnect()
        }
        socket.on(clientEvent: .disconnect) { [weak self] _, _ in
            self?.delegate?.ARCGSocketDidDisconnect()
        }
        socket.on("new message") { [weak self] data, _ in
            if let msg = data[0] as? String {
                self?.delegate?.ARCGSocketDidReceiveMessage(msg)
            }
        }
        socket.on(clientEvent: .error) {data, ack in
            print("Socket Error:")
         }
        socket.connect()
    }

    @objc func disconnect() {
        socket.disconnect()
    }

    @objc func sendMessage(_ msg: String) {
        socket.emit("chat message", msg)
    }
}
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容