Итак, я делаю сервер для своего лифта в Go и запускаю функцию «обработчик» в виде программы с TCP-соединением.
Я хочу, чтобы он считывал данные из соединения, и если в течение определенного промежутка времени сигнал не обнаружен, я хочу, чтобы он возвратил ошибку.
func handler(conn net.Conn){
conn.SetReadTimeout(5e9)
for{
data := make([]byte, 512)
_,err := conn.Read(data)
}
}
Пока у меня есть клиент, отправляющий данные по соединению, кажется, что он работает нормально, но как только клиент перестает отправлять функцию net.Read, возвращает ошибку EOF и начинает цикл без каких-либо задержек.
Возможно, именно так должен работать Read, но кто-то может предложить другой способ решения проблемы без необходимости закрывать и открывать соединение каждый раз, когда я хочу что-то прочитать?