Я новичок, и я пытаюсь создать простой чат-сервер, где клиенты могут передавать сообщения всем подключенным клиентам.
На моем сервере у меня есть goroutine (бесконечный цикл), который принимает соединение, и все соединения принимаются каналом.
go func() {
for {
conn, _ := listener.Accept()
ch <- conn
}
}()
Затем я запускаю обработчик (goroutine) для каждого подключенного клиента. Внутри обработчика я пытаюсь транслировать все соединения, итерации по каналу.
for c := range ch {
conn.Write(msg)
}
Однако я не могу транслировать, потому что (я думаю, что читаю документы), канал должен быть закрыт перед итерацией. Я не уверен, когда я должен закрыть канал, потому что я хочу постоянно принимать новые соединения, и закрытие канала не позволит мне это сделать. Если кто-нибудь может мне помочь или предоставить лучший способ для трансляции сообщений всем подключенным клиентам, это будет оценено по достоинству.