Интерпретация ошибки SetWriteDeadline

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

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

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

Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
Создание API ввода вопросов на разных языках программирования (Python, PHP, Go и Node.js)
API ввода вопросов - это полезный инструмент для интеграции моделей машинного обучения, таких как ChatGPT, в приложения, требующие обработки...
0
0
83
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

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

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

Также обратите внимание, что метод Набор Гориллы никогда не возвращает ошибку.

Ах да, я хотел сказать об ошибке при последующем вызове WriteMessage. Спасибо за информацию, это очень полезно!

rampatowl 23.05.2018 19:38

Другие вопросы по теме