Открыть подключение к веб-сокету со страницы.На сервере закройте выход из веб-сокета:
func wsHandler(w http.ResponseWriter, r *http.Request) {
conn, err := upgrader.Upgrade(w, r, nil)
if err != nil {
log.Println(err)
return
}
defer c.Close()
// Shutdown on exit from handler
defer server.Shutdown(context.Background())
// Read messages from client. NextReader returns an error
// when the client shuts down.
for {
if _, _, err := c.NextReader(); err != nil {
break
}
}
}
Добавьте эту строку кода в клиентское приложение:
var conn = new WebSocket("ws://" + document.location.host + "/ws");
Убедитесь, что conn
имеет время жизни страницы.
Это несколько похоже на решение SSE, предложенное в другом ответе, но имеет преимущество работы в большем количестве браузеров.
Нет необходимости отправлять пульс, потому что он находится на локальном хосте.