Gorilla WebSocket по сравнению с golang.org/x/net/websocket
Согласно проекту Gorilla Websockets, отправка пингов и понгов с помощью golang.org/x/net/websocket невозможна. В то же время на странице проекта golang.org/x/net/websocket размещено следующее:
Пакет websocket реализует клиент и сервер для протокола WebSocket, как указано в RFC 6455.
я немного смущен. golang.org/x/net/websocket реализует RFC 6455, но не может отправлять контрольные кадры (отмена, пинг, понг), хотя это указано в RFC 6455 - Раздел Контрольные кадры
Так что же будет, если я воспользуюсь пакетом golang.org/x/net/websocket. Будет ли соединение прервано после истечения времени ожидания? Другими словами, как здесь гарантируется, что соединение не разрывается?
1 ответ
Согласно проекту Gorilla Websockets, отправка пингов и понгов с помощью golang.org/x/net/websocket невозможна.
README Гориллы говорит что-то другое. В нем говорится, что пакет golang.org/x/net не может отправить пинг или получить понг. Это не говорит о том, что посылка не отправит понг.
Пакет golang.org/x/net автоматически отвечает на эхо-запрос, полученный от однорангового узла, отправляя ему значение понга, как и пакет Gorilla. Оба пакета корректно работают с одноранговым узлом, использующим ping и pongs для поддержания связи.
Приложение, использующее пакет golang.org/x/net/websocket, не может использовать пинги и понги для поддержания связи. Нет способа отправить пинг. Там нет никакого способа обнаружить, что понг был получен.