mirror of
https://github.com/m1k1o/neko.git
synced 2025-05-29 17:07:15 +02:00
add merciful reconnect option.
This commit is contained in:
parent
01c0f269ee
commit
b2ae808233
4 changed files with 35 additions and 14 deletions
|
@ -189,22 +189,31 @@ func (manager *WebSocketManagerCtx) Upgrade(w http.ResponseWriter, r *http.Reque
|
|||
}
|
||||
|
||||
if session.State().IsConnected {
|
||||
manager.logger.Debug().Str("session_id", session.ID()).Msg("already connected")
|
||||
manager.logger.Warn().Str("session_id", session.ID()).Msg("already connected")
|
||||
|
||||
// TODO: Refactor, return error code.
|
||||
if err = connection.WriteJSON(
|
||||
message.SystemDisconnect{
|
||||
Event: event.SYSTEM_DISCONNECT,
|
||||
Message: "already connected",
|
||||
}); err != nil {
|
||||
manager.logger.Error().Err(err).Msg("failed to send disconnect event")
|
||||
if !manager.sessions.MercifulReconnect() {
|
||||
// TODO: Refactor, return error code.
|
||||
if err = connection.WriteJSON(
|
||||
message.SystemDisconnect{
|
||||
Event: event.SYSTEM_DISCONNECT,
|
||||
Message: "already connected",
|
||||
}); err != nil {
|
||||
manager.logger.Error().Err(err).Msg("failed to send disconnect event")
|
||||
}
|
||||
|
||||
if err := connection.Close(); err != nil {
|
||||
manager.logger.Warn().Err(err).Msg("connection closed with an error")
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
if err := connection.Close(); err != nil {
|
||||
manager.logger.Warn().Err(err).Msg("connection closed with an error")
|
||||
}
|
||||
manager.logger.Debug().Str("session_id", session.ID()).Msg("replacing peer connection")
|
||||
|
||||
return
|
||||
// replace peer connection
|
||||
if err := session.GetWebSocketPeer().Destroy(); err != nil {
|
||||
manager.logger.Warn().Err(err).Msg("previous connection closed with an error")
|
||||
}
|
||||
}
|
||||
|
||||
peer := &WebSocketPeerCtx{
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue