package main import ( "context" "log" "net" "github.com/ThreeDotsLabs/watermill" "github.com/ThreeDotsLabs/watermill/message" "github.com/ThreeDotsLabs/watermill/message/router/middleware" "github.com/ThreeDotsLabs/watermill/message/router/plugin" "github.com/ThreeDotsLabs/watermill/pubsub/gochannel" ) func main() { l, err := net.Listen("tcp", ":5555") if err != nil { log.Fatal(err) } defer l.Close() wmLogger := watermill.NewStdLogger(false, false) router, err := message.NewRouter(message.RouterConfig{}, wmLogger) router.AddPlugin(plugin.SignalsHandler) router.AddMiddleware( middleware.CorrelationID, middleware.Recoverer, ) pubSub := gochannel.NewGoChannel(gochannel.Config{}, wmLogger) ctx := context.Background() ts := NewTELNETServer(ctx, l, pubSub) tp := NewTELNETParser(ctx, pubSub) go tp.Handle() for { conn, err := ts.l.Accept() if err != nil { log.Fatal(err) } go ts.Handle(conn) } }