Я переношу существующее http-приложение на приложение на основе GRP C. В течение некоторого времени и grp c, и http будут работать на разных портах в одном и том же файле go, и я перенесу существующую часть http-сервера в горутину. Вот как это будет выглядеть.
main() {
//Move existing server into a goroutine
go func() {
s.server, err = chttp.NewHTTPSServer("443", s.certPath, s.keyPath, s.Router, s.options)
if err != nil {
log.Fatalf("server: error creating HTTP server - %v\n", err)
}
if err := s.server.Serve(); err != http.ErrServerClosed {
log.Fatalf("server: run error - %v\n", err)
}
}
// Add new grpc server
lis, err := net.Listen("tcp", ":8433")
if err != nil {
log.Fatalf("failed to listen: %v", err)
}
a := grpc.NewServer()
pb.RegisterNewServer(a, &test.GrpcServer{})
if err := a.Serve(lis); err != nil {
log.Fatalf("failed to serve: %v", err)
}
}
Может ли это вызвать какие-либо проблемы, может ли grp c, http-сервер запускаться одновременно из той же программы? Я не уверен, может ли это вызвать какие-то проблемы, о которых я не знаю.