@Thoth777

Как отправить сообщение с сервера клиенту?

Всем привет!
Есть listener (горутина) , который слушает соединение с клиентом
В ней есть такое:
var buffer = make([]byte, 1024)

	for {
		bytesRead, err := conn.Read(buffer)
		if err != nil {
			conn.Close()
			return
		}
		var s = string(buffer[:bytesRead])
                //тут всякие действия в зависимости от приходящих значений
         }


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

При попытке что-то написать в сокет вне очереди, скрипт падает с ошибкой записи в закрытое соединение.

Буду признателен за помощь!
  • Вопрос задан
  • 130 просмотров
Решения вопроса 2
yellow79
@yellow79
Senior Software Engineer
Для того, чтобы что-то отправить, на той стороне кто-то должен принимать. Судя по вашей ошибке, клиент закрывает соединение, и тут уже никак и ничего не отправишь. Надо сперва научить клиента не рвать соединение, а продолжать ждать новых данных, тогда проблема исчезнет
Ответ написан
@Thoth777 Автор вопроса
Задачу решил: в горутине, которая обрабатывала запросы от клиента, вызвал другую горутину, которой передал коннекшен. Всем большое спасибо кто откликнулся!
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы