В программе go, я хочу одновременно запустить два веб-сервера,
очевидно, что они будут обслуживать два разных порта (и, если необходимо, IP-адреса) ,
проблема связана с вызовом http.handle
, когда я пытаюсь зарегистрировать обработчик для '/' для второго сервера, он паникует и говорит, что уже есть обработчик, связанный с '/',
Мне кажется, мне нужно создать мукс в дополнение к DefaultServeMux
, и я попытался сделать это, используя gorillaMux
, но не смог понять,Запуск двух веб-серверов одновременно за один раз в программе
Есть что-то принципиально неправильное с runni два веб-сервера в одной и той же программе/процессе.
Чтобы сделать его более понятным, один из двух веб-серверов используется как обычный веб-сервер, мне нужен второй, который будет выступать в роли RPC-сервера для обмена информацией между экземплярами программы, запущенной на разных узлах кластер,
EDIT: чтобы сделать его немного более ясно, что это не реальный код, но это суть
myMux := http.NewServeMux()
myMux.HandleFunc("/heartbeat", heartBeatHandler)
http.Handle("/", myMux)
server := &http.Server{
Addr: ":3400",
Handler: myMux,
}
go server.ListenAndServe()
gorillaMux := mux.NewRouter()
gorillaMux.HandleFunc("/", indexHandler)
gorillaMux.HandleFunc("/book", bookHandler)
http.Handle("/", gorillaMux)
server := &http.Server{
Addr: ":1234",
Handler: gorillaMux,
}
log.Fatal(server.ListenAndServe())
Можете ли вы предоставить код, который используете? – Agis
@Agis Только что сделал! – Ali