You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift 4中如何使用Socket.io建立连接?

Swift中封装Socket.IO连接管理类的实现

我最近查阅了最新的Swift版Socket.io官方文档,里面给出的全新连接示例代码是这样的:

let manager = SocketManager(socketURL: URL(string: "http://localhost:8080")!, config: [.log(true), .compress])
let socket = manager.defaultSocket

基于这个官方示例,我封装了一个SocketIOManager单例类,用来全局统一管理Socket连接,避免多处创建连接的问题,完整的类代码如下:

class SocketIOManager: NSObject {
    // 初始化SocketManager,注意URL必须包含完整协议(比如https),否则会初始化失败
    static let manager = SocketManager(socketURL: URL(string: "https://myurl.com:443")!, config: [.log(true), .compress])
    static let socket = manager.defaultSocket
    
    /// 建立Socket连接
    class func connectSocket(){
        socket.connect()
        
        // 监听连接成功事件
        socket.on(clientEvent: .connect) { _, _ in
            print("✅ Socket连接成功")
        }
        
        // 监听断开连接事件
        socket.on(clientEvent: .disconnect) { _, _ in
            print("❌ Socket断开连接")
        }
        
        // 监听连接失败事件
        socket.on(clientEvent: .connectError) { data, _ in
            if let error = data.first as? Error {
                print("⚠️ Socket连接失败: \(error.localizedDescription)")
            }
        }
    }
    
    /// 断开Socket连接
    class func disconnectSocket() {
        socket.disconnect()
    }
    
    /// 监听自定义业务事件
    class func listenForEvent(_ eventName: String, handler: @escaping ([Any]) -> Void) {
        socket.on(eventName) { data, _ in
            handler(data)
        }
    }
    
    /// 发送自定义业务事件
    class func sendEvent(_ eventName: String, with data: Any...) {
        socket.emit(eventName, with: data)
    }
}

这里有几个需要注意的细节:

  • 初始化SocketManager时,URL必须包含完整的协议头(http或https),不然URL(string:)会返回nil,导致初始化失败。如果不确定URL合法性,建议用可选绑定做安全处理
  • 单例模式能保证整个App生命周期内只有一个Socket连接实例,避免重复连接造成的资源浪费
  • 可以根据需求扩展配置项,比如重连策略(.reconnects(true)、.reconnectAttempts(5))、超时时间设置等
  • 记得在合适的时机调用SocketIOManager.connectSocket()(比如App启动后、进入实时通信页面时),不再需要连接时调用SocketIOManager.disconnectSocket()

内容的提问来源于stack exchange,提问作者Nastromo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 07:41:18