gpt4 book ai didi

ios - 如何在 Swift 4 中连接 Socket

转载 作者:搜寻专家 更新时间:2023-11-01 06:01:10 25 4
gpt4 key购买 nike

我想将我的应用程序连接到这里的套接字是代码:-

  import UIKit
import SocketIO

class SocketIOManager: NSObject {
static let manager = SocketManager(socketURL: URL(string: "myURL")!)
static let socket = manager.defaultSocket


class func connectSocket() {
let token = UserDefaults.standard.getAccessToken()

self.manager.config = SocketIOClientConfiguration(
arrayLiteral: .connectParams(["token": token]), .secure(true) // problem is here in passing token value
)
socket.connect()
}

class func receiveMsg() {
socket.on("new message here") { (dataArray, ack) in

print(dataArray.count)

}
}
}

我创建了一个新类 SocketIOManager.swift 并在 View Controller 中调用了我的函数

  SocketIOManager.connectSocket()

而且我没有使用本地主机 url 但我的应用程序仍然没有连接到套接字我想我遵循了这个 How to connect with Socket.io? Swift 4 enter image description here我还在 info.plist 中添加了 App Transport Security。有什么帮助吗?问题是当我传递 token 值时它会给我错误,否则它会正常工作。使用socket需要传递token吗?

最佳答案

你应该像这样在你的 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 中对 manager 属性进行强引用,static let shared = SocketIOManager() 你会为你做这件事!

关于ios - 如何在 Swift 4 中连接 Socket,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50001818/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com