美文网首页
Socket.IO-Client-Swift的使用

Socket.IO-Client-Swift的使用

作者: 心猿意码_ | 来源:发表于2022-08-15 13:39 被阅读0次

1、导入

pod 'Socket.IO-Client-Swift', '~> 15.2.0'

iOS使用Socket.IO的版本对应后台版本,不然无法连接
2、引用

import SocketIO

3、官方提供的使用方式

import SocketIO

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

socket.on(clientEvent: .connect) {data, ack in
    print("socket connected")
}

socket.on("currentAmount") {data, ack in
    guard let cur = data[0] as? Double else { return }
    
    socket.emitWithAck("canUpdate", cur).timingOut(after: 0) {data in
        if data.first as? String ?? "passed" == SocketAckValue.noAck {
            // Handle ack timeout 
        }

        socket.emit("update", ["amount": cur + 2.50])
    }

    ack.with("Got your currentAmount", "dude")
}

socket.connect()

以上方法尝试多次,但并无法连接成功!!!!

4、成功连接方式

import SocketIO

class SocketUtil {
    let WSURL = URL(string: "http://10.0.41.219:10246")
    static let share = SocketUtil()
    private var manager:SocketManager?
    private var socket:SocketIOClient?
    // [] 里面传递需要的字段 ,比如版本号  [ "h": HttpRequestUtil.share.platformVersion]
    private var socketHeaders : [String:String] = [:]
    private var config:SocketIOClientConfiguration = []

//  MARK: - Public
    /// 连接socket
    public func connect(authorization:String, uid:String){
        if manager != nil {
            //断开连接
            disconnect()
        }
        config = [
            .log(false),//打印日志
            .compress,
            // 此设置相当重要,因为在拼接到URL后面的时候,怎么都连接不上后台,改为params传值方式的时候,一下就连接上了。
            .connectParams(["source":3, "Authorization":authorization, "uid":uid]),
            .extraHeaders(socketHeaders),
            .reconnects(true), //是否重连机制
            .reconnectWaitMax(100) //重新连接等待最大秒数
        ]
        manager = SocketManager(socketURL: WSURL!, config: config)
        socket = manager?.defaultSocket
        socket?.connect()
    }
}

以上步骤连接完成后,就可以做通讯处理了

5、以下链接是一个demo

  • 在封装内提供了socket连接状态的监听及处理;
  • 断线重连处理;
  • 主动打开连接处理;
  • 监听接收到消息的处理;
  • 发送消息处理;
    可以完成基本的使用了:
    https://gitee.com/shouny/test-socket.git

相关文章

网友评论

      本文标题:Socket.IO-Client-Swift的使用

      本文链接:https://www.haomeiwen.com/subject/trbkgrtx.html