Handeling websocket disconnect
This commit is contained in:
@ -22,6 +22,8 @@ type Dispatcher struct {
|
||||
|
||||
extensions message.Extensions
|
||||
|
||||
advice atomic.Value
|
||||
|
||||
//map requestID
|
||||
pendingSubs map[string]chan error //todo wrap in structure
|
||||
pendingSubsMu sync.Mutex
|
||||
@ -103,6 +105,19 @@ func (d *Dispatcher) dispatchMessage(msg *message.Message) {
|
||||
if message.IsMetaMessage(msg) {
|
||||
//handle it
|
||||
switch msg.Channel {
|
||||
case message.MetaConnect:
|
||||
if msg.Advice.Reconnect == message.ReconnectNone {
|
||||
d.Disconnect()
|
||||
log.Println("Websocket terminated")
|
||||
return
|
||||
}
|
||||
log.Println("Websocket terminated: reconnecting")
|
||||
d.Connect()
|
||||
subsList := d.store.GetAll()
|
||||
for i := range subsList {
|
||||
sub := subsList[i]
|
||||
d.Subscribe(sub.Name())
|
||||
}
|
||||
case message.MetaSubscribe:
|
||||
//handle MetaSubscribe resp
|
||||
d.pendingSubsMu.Lock()
|
||||
|
Reference in New Issue
Block a user