mirror of
https://github.com/jech/galene.git
synced 2024-11-22 16:45:58 +01:00
Factor out handling actions.
This commit is contained in:
parent
fa625c693e
commit
3b505a89fe
1 changed files with 154 additions and 147 deletions
|
@ -827,6 +827,30 @@ func clientLoop(c *webClient, ws *websocket.Conn) error {
|
||||||
return m
|
return m
|
||||||
}
|
}
|
||||||
case a := <-c.actionCh:
|
case a := <-c.actionCh:
|
||||||
|
err := handleAction(c, a)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
case <-ticker.C:
|
||||||
|
if time.Since(readTime) > 75*time.Second {
|
||||||
|
return errors.New("client is dead")
|
||||||
|
}
|
||||||
|
// Some reverse proxies timeout connexions at 60
|
||||||
|
// seconds, make sure we generate some activity
|
||||||
|
// after 55s at most.
|
||||||
|
if time.Since(readTime) > 45*time.Second {
|
||||||
|
err := c.write(clientMessage{
|
||||||
|
Type: "ping",
|
||||||
|
})
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleAction(c *webClient, a interface{}) error {
|
||||||
switch a := a.(type) {
|
switch a := a.(type) {
|
||||||
case pushConnAction:
|
case pushConnAction:
|
||||||
g := c.group
|
g := c.group
|
||||||
|
@ -854,7 +878,7 @@ func clientLoop(c *webClient, ws *websocket.Conn) error {
|
||||||
c, a.replace, "",
|
c, a.replace, "",
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
continue
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
down, _, err := addDownConn(c, a.conn)
|
down, _, err := addDownConn(c, a.conn)
|
||||||
|
@ -880,7 +904,6 @@ func clientLoop(c *webClient, ws *websocket.Conn) error {
|
||||||
err)
|
err)
|
||||||
closeDownConn(c, down.id,
|
closeDownConn(c, down.id,
|
||||||
"negotiation failed")
|
"negotiation failed")
|
||||||
continue
|
|
||||||
}
|
}
|
||||||
case pushConnsAction:
|
case pushConnsAction:
|
||||||
g := c.group
|
g := c.group
|
||||||
|
@ -975,23 +998,7 @@ func clientLoop(c *webClient, ws *websocket.Conn) error {
|
||||||
log.Printf("unexpected action %T", a)
|
log.Printf("unexpected action %T", a)
|
||||||
return errors.New("unexpected action")
|
return errors.New("unexpected action")
|
||||||
}
|
}
|
||||||
case <-ticker.C:
|
return nil
|
||||||
if time.Since(readTime) > 75*time.Second {
|
|
||||||
return errors.New("client is dead")
|
|
||||||
}
|
|
||||||
// Some reverse proxies timeout connexions at 60
|
|
||||||
// seconds, make sure we generate some activity
|
|
||||||
// after 55s at most.
|
|
||||||
if time.Since(readTime) > 45*time.Second {
|
|
||||||
err := c.write(clientMessage{
|
|
||||||
Type: "ping",
|
|
||||||
})
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func failUpConnection(c *webClient, id string, message string) error {
|
func failUpConnection(c *webClient, id string, message string) error {
|
||||||
|
|
Loading…
Reference in a new issue