

dependencies: [
.package(url: "https://github.com/William-Weng/WWEventSource.git", .upToNextMajor(from: "1.2.0"))
]
| 参数 |
功能 |
| lastEventId |
记录最后的事件Id |
| lastRertyTime |
记录最后的重试时间 (ms) |
| 函数 |
功能 |
| connect(httpMethod:delegate:urlString:parameters:headers:httpBodyType:configuration:queue:) |
开启SSE连接 |
| disconnect() |
关闭SSE连接 |
| 函数 |
功能 |
| serverSentEventsConnectionStatus(_:result:) |
接收连接的状态 |
| serverSentEvents(_:rawString:) |
接收从Server端传来的原始信息 |
| serverSentEvents(_:eventValue:) |
接收从Server端传来的事件信息 |
import UIKit
import WWPrint
import WWEventSource
// MARK: - ViewController
final class ViewController: UIViewController {
@IBOutlet weak var eventStringLabel: UILabel!
private let urlString = "https://:54321/sse"
private var tempMessage = ""
override func viewDidLoad() {
super.viewDidLoad()
}
@IBAction func sseTest(_ sender: UIBarButtonItem) {
let dictionary: [String : Any] = ["content": "We’ve trained a model called ChatGPT which interacts in a conversational way. The dialogue format makes it possible for ChatGPT to answer followup questions, admit its mistakes, challenge incorrect premises, and reject inappropriate requests.", "delayTime": 0.05]
tempMessage = ""
_ = WWEventSource.shared.connect(httpMethod: .POST, delegate: self, urlString: urlString, httpBodyType: .dictionary(dictionary))
}
}
// MARK: - WWEventSourceDelegate
extension ViewController: WWEventSourceDelegate {
func serverSentEventsConnectionStatus(_ eventSource: WWEventSource, result: Result<WWEventSource.Constant.ConnectionStatus, Error>) {
wwPrint(result)
}
func serverSentEvents(_ eventSource: WWEventSource, rawString: String) {
wwPrint(rawString)
}
func serverSentEvents(_ eventSource: WWEventSource, eventValue: WWEventSource.Constant.EventValue) {
switch eventValue.keyword {
case .id: wwPrint(eventValue)
case .event: wwPrint(eventValue)
case .retry: wwPrint(eventValue)
case .data: wwPrint(eventValue)
tempMessage += eventValue.value
DispatchQueue.main.async { self.eventStringLabel.text = self.tempMessage }
}
}
}