我在使用Vapor 3构建的应用程序中有一个Web套接字,我已经部署到Heroku。套接字保持关闭状态。如何在Vapor 3中保持插座的活动状态?在Vapor 2中,我使用了这些代码行。我如何在Vapor 3中做同样的事情?
background {
while ws.state == .open {
try? ws.ping()
self.console.wait(seconds: 10) // every 10 seconds
}
}
答案 0 :(得分:0)
这是我使用的解决方案,对于我的用例来说似乎很好用。如果有更好的解决方案,请告诉我。
func runRepeatedTask() {
_ = req.eventLoop.scheduleTask(in: .seconds(1)) { () -> Void in
ws.send(Data())
if socketOpen {
runRepeatedTask()
}
}
}
runRepeatedTask()
我将此包含在ws.onText({ ws, string in
上方/下方的Web套接字函数中。我希望这会有所帮助!