53 lines
1.5 KiB
Go
53 lines
1.5 KiB
Go
package main
|
|
|
|
import (
|
|
pb "gitlab.michelsen.id/phillmichelsen/tessera/pkg/pb/data_service"
|
|
"gitlab.michelsen.id/phillmichelsen/tessera/services/data_service/internal/manager"
|
|
"gitlab.michelsen.id/phillmichelsen/tessera/services/data_service/internal/provider/binance"
|
|
"gitlab.michelsen.id/phillmichelsen/tessera/services/data_service/internal/router"
|
|
"gitlab.michelsen.id/phillmichelsen/tessera/services/data_service/internal/server"
|
|
"google.golang.org/grpc"
|
|
"google.golang.org/grpc/reflection"
|
|
"log"
|
|
"net"
|
|
)
|
|
|
|
func main() {
|
|
// Setup
|
|
r := router.NewRouter()
|
|
m := manager.NewManager(r)
|
|
binanceFutures := binance.NewFuturesWebsocket()
|
|
m.AddProvider("binance_futures_websocket", binanceFutures)
|
|
|
|
// gRPC Server
|
|
grpcServer := grpc.NewServer()
|
|
go func() {
|
|
pb.RegisterDataServiceStreamingServer(grpcServer, server.NewGRPCStreamingServer(m))
|
|
reflection.Register(grpcServer)
|
|
grpcLis, err := net.Listen("tcp", ":50051")
|
|
if err != nil {
|
|
log.Fatalf("Failed to listen for gRPC: %v", err)
|
|
}
|
|
log.Println("gRPC server listening on :50051")
|
|
if err := grpcServer.Serve(grpcLis); err != nil {
|
|
log.Fatalf("Failed to serve gRPC: %v", err)
|
|
}
|
|
}()
|
|
|
|
// Socket Server
|
|
socketServer := server.NewSocketStreamingServer(m)
|
|
go func() {
|
|
socketLis, err := net.Listen("tcp", ":6000")
|
|
if err != nil {
|
|
log.Fatalf("Failed to listen for socket: %v", err)
|
|
}
|
|
log.Println("Socket server listening on :6000")
|
|
if err := socketServer.Serve(socketLis); err != nil {
|
|
log.Fatalf("Socket server error: %v", err)
|
|
}
|
|
}()
|
|
|
|
// Block main forever
|
|
select {}
|
|
}
|