用蒸汽3保持插座活着

时间:2018-05-23 21:47:15

标签: swift heroku websocket vapor

我在使用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
    }
}

1 个答案:

答案 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套接字函数中。我希望这会有所帮助!