swift - 使用 Vapor 3 保持套接字事件

标签 swift heroku websocket vapor

我在使用已部署到 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/

相关文章:

swift - 是否可以使用 Alamofire 创建多个单独的操作队列(或类似的东西)?

ios - 如何在 ios 中显示收件箱中的邮件数量

ruby-on-rails - 无法解析依赖关系:用户请求 'fileutils (= 1.0.2)' (Gem::UnsatisfiableDependencyError)

ssl - 如何在 HornetQ 中接受安全的 websocket 连接

swift ,火力地堡 : No datas in realtime database after creating user

postgresql - Heroku 上的 Alembic/Flask-migrate 迁移运行但不创建表

iOS Firebase 数据库安全。创建新的应用程序用户 : Checking for Existence of Username

javascript - 哪些浏览器支持 HTML5 WebSocket API?

websocket - xsockets.net(.NET WebSocket 服务器)如​​何在 Windows 2008 上运行?

Pod 上的 Swift 编译器错误