ios - 如何从 Socket.io On Function 执行 UI 操作
问题描述
我是使用 socket.io 的新手。我已经为套接字工作制作了一个单例类,并且我在我的应用程序中使用了它的一个实例。
On
我的问题是:当我在不同的视图控制器上时,如何在函数中接收到数据后执行任何操作?
import Foundation
import SocketIO
import UIKit
protocol testUI {
func fareUpdate(amount:NSNumber)
}
var delegate:testUI?
class SocketHelper {
static let shared = SocketHelper()
var socket: SocketIOClient!
let manager = SocketManager(socketURL: URL(string: "http://13.59.81.136:3355/")!, config: [.log(true), .compress, .connectParams(["token":user.shared.token])] )
private init() {
socket = manager.defaultSocket
}
func connectSocket(completion: @escaping(Bool) -> () ) {
disconnectSocket()
// socket.on(clientEvent: .connect) {[weak self] (data, ack) in
// print("socket connected")
// self?.socket.removeAllHandlers()
// completion(true)
// }
socket.connect()
}
func disconnectSocket() {
socket.removeAllHandlers()
socket.disconnect()
print("socket Disconnected")
}
func testStatus(){
print(socket.status)
}
func checkConnection() -> Bool {
if socket.manager?.status == .connected {
return true
}
return false
}
enum Events {
case search
func getFareEstimate(params:NSDictionary){
SocketHelper.shared.socket.emit("fareEstimate" , params)
}
func listen(completion: @escaping (Any) -> Void) {
SocketHelper.shared.socket!.on("rideFares") { (response, emitter) in
print(response)
let dic = response as! NSArray
let data = dic[0] as! NSDictionary
let fare = data["fare"] as! NSNumber
DispatchQueue.main.async {
delegate?.fareUpdate(amount: fare)
}
}
// func off() {
// SocketHelper.shared.socket.off(listnerName)
// }
}
}
}
我尝试过使用委托,但它似乎不起作用。On
当套接字接收函数中的数据时,我可能在多个视图控制器上。
解决方案
推荐阅读
- python - 我如何从 2 个表中选择 django 中的一些相关字段?
- flutter - 颤振问题 | 未为签署配置版本设置密钥库文件
- postgresql - 我在 docker 上执行我的 postgres 数据库查询时遇到问题
- java - 我真的应该在从 jdk 7 迁移到 jdk 8 时替换 java.security.PrivilegedAction 吗?
- sql - PL/SQL 游标创建失败
- bash - Bash - 从 $PATH 打印文件的完整路径
- python - 我想使用 discord.py 创建一个多页帮助命令
- node.js - 使用用户提示的输入功能
- aws-codebuild - AWS 代码构建。无法加载 SDK 解析器
- reactjs - 在变量更改时将 UseSelector 与渲染反应