Вы должны создать общее свойство в своем классе SocketIOManager
следующим образом:
static let shared = SocketIOManager()
, а затем создать init()
следующим образом:
var socket: SocketIOClient!
// defaultNamespaceSocket and swiftSocket both share a single connection to the server
let manager = SocketManager(socketURL: URL(string: "http://localhost:3000")!, config: [.log(true), .compress])
override init() {
super.init()
socket = manager.defaultSocket
}
и, наконец, написать свои методыкак это:
func connectSocket() {
let token = UserDefaults.standard.getAccessToken()
self.manager.config = SocketIOClientConfiguration(
arrayLiteral: .connectParams(["token": token]), .secure(true)
)
socket.connect()
}
func receiveMsg() {
socket.on("new message here") { (dataArray, ack) in
print(dataArray.count)
}
}
и вызовите ваш метод следующим образом:
SocketIOManager.shared.connectSocket()
Дело в том, что вы должны сделать строгую ссылку на свойство менеджера в вашем viewController, и static let shared = SocketIOManager()
вы делаетеэто для тебя!