我在使用已部署到 Heroku 的 Vapor 3 构建的应用程序中有一个网络套接字。套接字一直关闭。如何让 Vapor 3 中的套接字保持事件状态?在 Vapor 2 中,我使用了这些代码行。我如何在 Vapor 3 中做同样的事情?
background {
while ws.state == .open {
try? ws.ping()
self.console.wait(seconds: 10) // every 10 seconds
}
}
最佳答案
这是我使用的解决方案,它似乎很适合我的用例。如果有更好的解决方案,请告诉我。
func runRepeatedTask() {
_ = req.eventLoop.scheduleTask(in: .seconds(1)) { () -> Void in
ws.send(Data())
if socketOpen {
runRepeatedTask()
}
}
}
runRepeatedTask()
我将其包含在 ws.onText({ ws, string in
正上方/下方的网络套接字函数中。希望这对您有所帮助!
关于swift - 使用 Vapor 3 保持套接字事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50497952/