2016-07-05 66 views
0

活跃WebSocket连接的服务器的平稳重启我看了一下这个库从Facebook:与围棋

https://github.com/facebookgo/grace

和其他一些像这样的:

https://github.com/fvbock/endless

那让我们对Go服务器进行优雅的重启,让我的宕机时间为零,以便我可以完成正在进行的请求,防止数据被破坏等等。

但我想知道如果这样做,如果我有这样做时活动的WebSocket连接?由于存在活动的WebSocket连接,旧服务器是否永远不会停止运行?我并不在乎WebSocket连接太多,我只关心在关闭旧服务器之前正在服务的正常请求,并启动将用于新逻辑的新更新编译文件。

这将如何与WebSockets?

回答

3

编写应用程序来处理重新连接。服务器重新启动只是连接可能被丢弃的一个原因。

要使用websockets(或任何类型的长期连接)重新启动服务器,请启动新服务器,停止监听旧服务器上的连接,并通过关闭连接排除旧服务器上的连接。如果编写应用程序来处理重新连接,那么服务器重新启动应该对用户不可见。

排除连接而不是一举全部关闭连接是有帮助的。这避免了您的客户端在他们重新连接,验证,查询数据库中的消息积压等时发生的拒绝服务攻击等。