Initial cloud-services repo - gateway service + pkg modules
This commit is contained in:
26
services/gateway/server/server_http.go
Normal file
26
services/gateway/server/server_http.go
Normal file
@@ -0,0 +1,26 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
"net/http"
|
||||
|
||||
"gateway/handlers"
|
||||
|
||||
"fiskerinc.com/modules/httphandlers"
|
||||
"fiskerinc.com/modules/logger"
|
||||
httptrace "gopkg.in/DataDog/dd-trace-go.v1/contrib/net/http"
|
||||
)
|
||||
|
||||
// StartHTTP runs server for websockets and docs
|
||||
func StartHTTP(ctx context.Context, port string) {
|
||||
mux := httptrace.NewServeMux()
|
||||
|
||||
mux.Handle("/docs/", http.StripPrefix("/docs", handlers.DocsHandler()))
|
||||
|
||||
mux.HandleFunc("/session", httphandlers.PanicHandler(handlers.SecureSessionWebsocketHandler))
|
||||
mux.HandleFunc("/secret_mobile", httphandlers.PanicHandler(handlers.InsecureSessionWebsocketHandler))
|
||||
|
||||
logger.Info().Msgf("gateway websockets on http://0.0.0.0%s", port)
|
||||
|
||||
logger.Fatal().AnErr("http.ListenAndServe", http.ListenAndServe(port, mux)).Send()
|
||||
}
|
||||
60
services/gateway/server/server_redis.go
Normal file
60
services/gateway/server/server_redis.go
Normal file
@@ -0,0 +1,60 @@
|
||||
package server
|
||||
|
||||
import (
|
||||
"context"
|
||||
"errors"
|
||||
"io"
|
||||
"time"
|
||||
|
||||
"gateway/services"
|
||||
|
||||
"fiskerinc.com/modules/logger"
|
||||
)
|
||||
|
||||
func logRedisErr(err error) {
|
||||
if errors.Is(err, io.EOF) {
|
||||
logger.Warn().Err(err).Send()
|
||||
} else {
|
||||
logger.Error().Err(err).Send()
|
||||
}
|
||||
}
|
||||
|
||||
// StartRedisQueue intiates Redis queue listener
|
||||
func StartRedisQueue(ctx context.Context) {
|
||||
logger.Info().Msg("initializing redis queues")
|
||||
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
logger.Error().Msgf("PanicRedis %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
for {
|
||||
err := services.GetRedisQueues().Listen(ctx, services.GetConnections().SendMsgToClient)
|
||||
for err != nil {
|
||||
logRedisErr(err)
|
||||
err = services.GetRedisQueues().Restart()
|
||||
time.Sleep(time.Second * 10)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// StartRedisSubscriptions initiates Redis subscription listener
|
||||
func StartRedisSubscriptions(ctx context.Context) {
|
||||
logger.Info().Msg("initializing redis subscriptions")
|
||||
|
||||
defer func() {
|
||||
if err := recover(); err != nil {
|
||||
logger.Error().Msgf("PanicRedis %v", err)
|
||||
}
|
||||
}()
|
||||
|
||||
for {
|
||||
err := services.GetRedisPubSub().Listen(ctx, services.GetConnections().SendMsgToClient)
|
||||
for err != nil {
|
||||
logRedisErr(err)
|
||||
err = services.GetRedisPubSub().Restart()
|
||||
time.Sleep(time.Second * 10)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user