package app import ( "fmt" "git.hlsq.asia/mmorpg/service-common/log" "git.hlsq.asia/mmorpg/service-common/module" "git.hlsq.asia/mmorpg/service-common/net/socket/websocket" "git.hlsq.asia/mmorpg/service-gateway/config" "git.hlsq.asia/mmorpg/service-gateway/internal/net/ws_gateway" "github.com/panjf2000/gnet/v2" "sync" "time" ) // ModuleWebsocketServer Websocket服务模块 type ModuleWebsocketServer struct { module.DefaultModule wg *sync.WaitGroup server *websocket.WSServer } func (m *ModuleWebsocketServer) Init() error { m.wg = &sync.WaitGroup{} m.server = websocket.NewWSServer( &ws_gateway.GatewayWsServer{}, log.GetLogger().Named("ws_server"), 5*time.Second, ) return nil } func (m *ModuleWebsocketServer) Start(ready *sync.WaitGroup) error { m.wg.Add(1) go func() { defer m.wg.Done() ready.Done() _ = m.server.Run( fmt.Sprintf("tcp4://0.0.0.0:%v", config.Get().Serve.Socket.Web.Port), true, 0, gnet.TCPNoDelay, 64*1024, 64*1024, true, false, true, log.GetLogger().Named("GNET"), ) }() return nil } func (m *ModuleWebsocketServer) Stop() error { if err := m.server.Stop(); err != nil { log.Errorf("stop websocket server failed: %v", err) } m.wg.Wait() return nil }