swift - Socket.io Javascript 向 Swift 发出
问题描述
我有这个 Javascript socket.io 发射函数,我需要用 Swift、SwiftUI 和文档中的说明编写它:
订阅和获取归档过程事件:
- 订阅“galleryArchive”套接字事件
- 通过套接字发出:socket.emit("subscribeOnGalleryArchiveInfo", { archiveEventName, galleryId }, data => {});
剧本:
socketClient.emit(
'subscribeOnGalleryArchiveInfo',
{ archiveEventName: eventName, galleryId },
(event: GalleryArchiveEvent) => {
const { data } = event;
setArchivingData(data);
}
);
我所做的只是在 Swift 中初始化了 Socket viewModel,但似乎无法在没有一堆错误的情况下重新创建这个 emit 函数。
我的代码:
class GalleryArchiveSocket: ObservableObject {
@Published var archiveEventName: String
@Published var galleryId: String
var manager: SocketManager?
var socket: SocketIOClient?
init(archiveEventName: String, galleryId: String) {
self.archiveEventName = archiveEventName
self.galleryId = galleryId
guard let apiUrl = AppConfig.rootURL
else {
return
}
manager = SocketManager(
socketURL: apiUrl,
config: [
.extraHeaders(
[
HTTPHeader.authorization.key: HTTPHeader.authorization.value.headerValue
]
),
.log(true),
.compress
]
)
guard let socket = manager?.defaultSocket
else {
return
}
socket.on(clientEvent: .connect) {_, _ in
print("I'm connected")
// Emit function with param ? and receive data ?
}
socket.connect()
}
}
解决方案
通过查看大量 Socket.io swift 示例,我能够找到一个解决方案,直到我看到有人传递如下数据:["archiveEventName": self.archiveEventName, "galleryId": self.galleryId]
并且@workingdog帮助了初始语法。
socket.on(clientEvent: .connect) {_, _ in
socket.emit("subscribeOnGalleryArchiveInfo", ["archiveEventName": self.archiveEventName, "galleryId": self.galleryId])
socket.on("GalleryArchiveEvent") { data, ack in
print(data)
}
}
推荐阅读
- android - Android: Detect if night mode is set to FOLLOW_SYSTEM with AppCompatDelegate
- ruby - Ruby Solargraph Snippet Does Not Show Up
- docker - Unable to install Spinnaker via Helm
- python - inserting and retrieving python dataframe in hana database
- javascript - how to fix networkerror when fetching an api?
- python - How do I count the number of divs with a specific class using selenium
- javascript - Why aren't array methods working within my .then() callback function?
- android - FCM push not wokring in one plus 8
- python - Selenium Python:循环中的execute_script问题
- python-behave - 在 VS 代码中,我尝试使用 python、selenium 解决问题,但我没有得到正确的输出。你能告诉我问题出在哪里吗?