package controller import ( socketio "github.com/googollee/go-socket.io" "github.com/hyperzlib/isekai-remote-playback/context" "github.com/hyperzlib/isekai-remote-playback/store" eventemitter "github.com/vansante/go-event-emitter" ) type SocketController struct { basePath string sockets *socketio.Server events *eventemitter.Emitter context *context.ServerContext storeModel *store.StoreModel } func GetContext[T interface{}](socket socketio.Conn) *T { ctx, ok := socket.Context().(*T) if !ok { ctx = new(T) socket.SetContext(ctx) } return ctx }