Как заставить net.Read ждать ввода в golang?

нет сигнала, поэтому я делаю сервер для своего лифта в Go и запускаю функцию «обработчик» как горутину с TCP-соединение. Я хочу, чтобы он читал из соединения, и если в течение определенного промежутка времени сигнал не обнаружен, я хочу, чтобы он возвращал ошибку.

func handler(conn net.Conn){
    conn.SetReadTimeout(5e9)
    for{
        data := make([]byte, 512)
        _,err := conn.Read(data)
    }
}

Пока у меня есть клиент, отправляющий данные по соединению, он работает нормально, но как только клиент перестает отправлять данные, функция net.Read возвращает ошибку EOF и начинает цикл без каких-либо задержек.

Возможно, так и должно работать чтение, но может ли кто-нибудь предложить другой способ решения проблемы без необходимости закрывать и открывать соединение каждый раз, когда я хочу что-то прочитать?

9
задан themihai 22 August 2015 в 20:50
поделиться