Интерпретация ошибки SetWriteDeadline - PullRequest
0 голосов
/ 23 мая 2018

Я пишу сервер веб-сокетов в Go, который передает сообщения клиентам.Я использую SetWriteDeadline при каждой отправке, чтобы широковещательный цикл не зависал.

Мой вопрос: как мне интерпретировать ошибку из SetWriteDeadline?В частности, должен ли я предположить, что с этим конкретным клиентом что-то не так, и отменить регистрацию?Или это проблема на стороне сервера, которая возникла на этом клиенте?

После исследования SetWriteDeadline я обнаружил, что крайний срок для размещения сообщения на стороне стека TCP, не для клиента, чтобы получить сообщение.Поэтому, возможно, лучший способ сформулировать мой вопрос заключается в следующем: существует ли отдельный стек TCP для каждого клиента websocket (возможно, он имеет размер WriteBufferSize), или этот буфер совместно используется клиентами?В первом случае кажется, что я должен отменить регистрацию клиента при ошибке SetWriteDeadline, но не во втором случае.

1 Ответ

0 голосов
/ 23 мая 2018

Соединения веб-сокетов не зависят от других соединений веб-сокетов.

Соединения Websocket имеют базовое сетевое соединение.Эти сетевые соединения также не зависят друг от друга.

Ошибка, возвращаемая из SetWriteDeadline, указывает на проблему с этим конкретным соединением веб-сокета или базовым сетевым соединением соединения веб-сокета.

Также обратите внимание на то, что метод SetWriteDeadline Gorilla никогда не возвращает ошибку.

...