Fix graceful disconnect commands from the server
This commit is contained in:
parent
95c6c7859f
commit
2ac3e8e128
|
@ -152,7 +152,8 @@ func (s *Server) KickCommand(words []string, sub *Subscriber) {
|
||||||
other.SendJSON(messages.Message{
|
other.SendJSON(messages.Message{
|
||||||
Action: messages.ActionKick,
|
Action: messages.ActionKick,
|
||||||
})
|
})
|
||||||
s.DeleteSubscriber(other)
|
other.authenticated = false
|
||||||
|
other.Username = ""
|
||||||
sub.ChatServer("%s has been kicked from the room", username)
|
sub.ChatServer("%s has been kicked from the room", username)
|
||||||
|
|
||||||
// Broadcast it to everyone.
|
// Broadcast it to everyone.
|
||||||
|
@ -200,7 +201,8 @@ func (s *Server) KickAllCommand() {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
s.DeleteSubscriber(sub)
|
sub.authenticated = false
|
||||||
|
sub.Username = ""
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -245,7 +247,8 @@ func (s *Server) BanCommand(words []string, sub *Subscriber) {
|
||||||
other.SendJSON(messages.Message{
|
other.SendJSON(messages.Message{
|
||||||
Action: messages.ActionKick,
|
Action: messages.ActionKick,
|
||||||
})
|
})
|
||||||
s.DeleteSubscriber(other)
|
other.authenticated = false
|
||||||
|
other.Username = ""
|
||||||
sub.ChatServer("%s has been banned from the room for %d hours.", username, duration/time.Hour)
|
sub.ChatServer("%s has been banned from the room for %d hours.", username, duration/time.Hour)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,7 +62,8 @@ func (s *Server) OnLogin(sub *Subscriber, msg messages.Message) {
|
||||||
other.SendJSON(messages.Message{
|
other.SendJSON(messages.Message{
|
||||||
Action: messages.ActionKick,
|
Action: messages.ActionKick,
|
||||||
})
|
})
|
||||||
s.DeleteSubscriber(other)
|
other.authenticated = false
|
||||||
|
other.Username = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
// They will take over their original username.
|
// They will take over their original username.
|
||||||
|
|
|
@ -229,7 +229,7 @@ func (s *Server) WebSocket() http.HandlerFunc {
|
||||||
var token string
|
var token string
|
||||||
if sub.JWTClaims != nil {
|
if sub.JWTClaims != nil {
|
||||||
if jwt, err := sub.JWTClaims.ReSign(); err != nil {
|
if jwt, err := sub.JWTClaims.ReSign(); err != nil {
|
||||||
log.Error("ReSign JWT token for %s: %s", sub.Username, err)
|
log.Error("ReSign JWT token for %s#%d: %s", sub.Username, sub.ID, err)
|
||||||
} else {
|
} else {
|
||||||
token = jwt
|
token = jwt
|
||||||
}
|
}
|
||||||
|
@ -279,6 +279,7 @@ func (s *Server) DeleteSubscriber(sub *Subscriber) {
|
||||||
|
|
||||||
// Cancel its context to clean up the for-loop goroutine.
|
// Cancel its context to clean up the for-loop goroutine.
|
||||||
if sub.cancel != nil {
|
if sub.cancel != nil {
|
||||||
|
log.Info("Calling sub.cancel() on subscriber: %s#%d", sub.Username, sub.ID)
|
||||||
sub.cancel()
|
sub.cancel()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1283,7 +1283,7 @@ export default {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!this.disconnect) {
|
if (!this.disconnect) {
|
||||||
if (ev.code !== 1001) {
|
if (ev.code !== 1001 && ev.code !== 1000) {
|
||||||
this.ChatClient("Reconnecting in 5s");
|
this.ChatClient("Reconnecting in 5s");
|
||||||
setTimeout(this.dial, 5000);
|
setTimeout(this.dial, 5000);
|
||||||
}
|
}
|
||||||
|
@ -1376,7 +1376,10 @@ export default {
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "disconnect":
|
case "disconnect":
|
||||||
|
this.onWho({ whoList: [] });
|
||||||
this.disconnect = true;
|
this.disconnect = true;
|
||||||
|
this.ws.connected = false;
|
||||||
|
this.ws.conn.close(1000, "server asked to close the connection");
|
||||||
break;
|
break;
|
||||||
case "ping":
|
case "ping":
|
||||||
// New JWT token?
|
// New JWT token?
|
||||||
|
|
Loading…
Reference in New Issue
Block a user