He escrito un servidor websocket en el websocket de fiber , y el cliente es js websocket en el navegador.
Algunas preguntas sobre ping / pong :
conn.ReadJSON() se bloqueará, ¿eso significa que debo usar conn.SetPingHandler() para especificar un controlador, o simplemente usar el controlador predeterminado?Agregué un ping de prueba enviado desde el servidor websocket de fibra al cliente js, si es necesario:
// ping // TODO: not sure is this needed ? // TODO: use goroutine pool ? if needPing { go func() { pingTicker := time.NewTicker(pingPeriod) defer func() { pingTicker.Stop() }() time.Sleep(pingPeriod) // wait a while before start ping, for { select { case <-pingTicker.C: conn.WriteControl(websocket.PingMessage, []byte("ping"), time.Now().Add(time.Second*5)) log.Debug("ping") } } }() }Tampoco veo ningún mensaje de ping en el cliente en las herramientas de desarrollo de Chrome.
Supongo que es mejor usar for{ select } para manejar tanto el ping como el mensaje normal, pero conn.ReadJSON() bloquearía la gorutina, ¿es posible que deba crear un canal? Aún no lo intenté.
Por cierto, ¿alguna sugerencia para el impl de ping?