Loading api/api.pb.go +330 −265 File changed.Preview size limit exceeded, changes collapsed. Show changes api/api.proto +10 −0 Original line number Diff line number Diff line Loading @@ -288,6 +288,16 @@ message DeleteStorageObjectsRequest { repeated DeleteStorageObjectId object_ids = 1; } // Represents an event to be passed through the server to registered event handlers. message Event { // An event name, type, category, or identifier. string name = 1; // Arbitrary event property values. map<string, string> properties = 2; // The time when the event was triggered. google.protobuf.Timestamp timestamp = 3; } // A friend of a user. message Friend { // The friendship status. Loading runtime/runtime.go +7 −1 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ const ( RUNTIME_CTX_ENV = "env" // The mode associated with the execution context. It's one of these values: // "run_once", "rpc", "before", "after", "match", "matchmaker", "leaderboard_reset", "tournament_reset", "tournament_end". // "event", "run_once", "rpc", "before", "after", "match", "matchmaker", "leaderboard_reset", "tournament_reset", "tournament_end". RUNTIME_CTX_MODE = "execution_mode" // Query params that was passed through from HTTP request. Loading Loading @@ -647,6 +647,12 @@ type Initializer interface { // RegisterAfterGetUsers can be used to perform additional logic after retrieving users. RegisterAfterGetUsers(fn func(ctx context.Context, logger Logger, db *sql.DB, nk NakamaModule, out *api.Users, in *api.GetUsersRequest) error) error // RegisterEventSessionStart can be used to define functions triggered when client sessions start. RegisterEventSessionStart(fn func(ctx context.Context, logger Logger, evt *api.Event)) error // RegisterEventSessionStart can be used to define functions triggered when client sessions end. RegisterEventSessionEnd(fn func(ctx context.Context, logger Logger, evt *api.Event)) error } type Leaderboard interface { Loading sample_go_module/sample.go +14 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,12 @@ func InitModule(ctx context.Context, logger runtime.Logger, db *sql.DB, nk runti }); err != nil { return err } if err := initializer.RegisterEventSessionStart(eventSessionStart); err != nil { return err } if err := initializer.RegisterEventSessionEnd(eventSessionEnd); err != nil { return err } return nil } Loading Loading @@ -129,3 +135,11 @@ func (m *Match) MatchTerminate(ctx context.Context, logger runtime.Logger, db *s return state } func eventSessionStart(ctx context.Context, logger runtime.Logger, evt *api.Event) { logger.Printf("session start %v %v", ctx, evt) } func eventSessionEnd(ctx context.Context, logger runtime.Logger, evt *api.Event) { logger.Printf("session end %v %v", ctx, evt) } server/api.go +1 −1 Original line number Diff line number Diff line Loading @@ -177,7 +177,7 @@ func StartApiServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, j grpcGatewayRouter := mux.NewRouter() // Special case routes. Do NOT enable compression on WebSocket route, it results in "http: response.Write on hijacked connection" errors. grpcGatewayRouter.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(200) }).Methods("GET") grpcGatewayRouter.HandleFunc("/ws", NewSocketWsAcceptor(logger, config, sessionRegistry, matchmaker, tracker, jsonpbMarshaler, jsonpbUnmarshaler, pipeline)).Methods("GET") grpcGatewayRouter.HandleFunc("/ws", NewSocketWsAcceptor(logger, config, sessionRegistry, matchmaker, tracker, runtime, jsonpbMarshaler, jsonpbUnmarshaler, pipeline)).Methods("GET") // Enable stats recording on all request paths except: // "/" is not tracked at all. Loading Loading
api/api.proto +10 −0 Original line number Diff line number Diff line Loading @@ -288,6 +288,16 @@ message DeleteStorageObjectsRequest { repeated DeleteStorageObjectId object_ids = 1; } // Represents an event to be passed through the server to registered event handlers. message Event { // An event name, type, category, or identifier. string name = 1; // Arbitrary event property values. map<string, string> properties = 2; // The time when the event was triggered. google.protobuf.Timestamp timestamp = 3; } // A friend of a user. message Friend { // The friendship status. Loading
runtime/runtime.go +7 −1 Original line number Diff line number Diff line Loading @@ -101,7 +101,7 @@ const ( RUNTIME_CTX_ENV = "env" // The mode associated with the execution context. It's one of these values: // "run_once", "rpc", "before", "after", "match", "matchmaker", "leaderboard_reset", "tournament_reset", "tournament_end". // "event", "run_once", "rpc", "before", "after", "match", "matchmaker", "leaderboard_reset", "tournament_reset", "tournament_end". RUNTIME_CTX_MODE = "execution_mode" // Query params that was passed through from HTTP request. Loading Loading @@ -647,6 +647,12 @@ type Initializer interface { // RegisterAfterGetUsers can be used to perform additional logic after retrieving users. RegisterAfterGetUsers(fn func(ctx context.Context, logger Logger, db *sql.DB, nk NakamaModule, out *api.Users, in *api.GetUsersRequest) error) error // RegisterEventSessionStart can be used to define functions triggered when client sessions start. RegisterEventSessionStart(fn func(ctx context.Context, logger Logger, evt *api.Event)) error // RegisterEventSessionStart can be used to define functions triggered when client sessions end. RegisterEventSessionEnd(fn func(ctx context.Context, logger Logger, evt *api.Event)) error } type Leaderboard interface { Loading
sample_go_module/sample.go +14 −0 Original line number Diff line number Diff line Loading @@ -37,6 +37,12 @@ func InitModule(ctx context.Context, logger runtime.Logger, db *sql.DB, nk runti }); err != nil { return err } if err := initializer.RegisterEventSessionStart(eventSessionStart); err != nil { return err } if err := initializer.RegisterEventSessionEnd(eventSessionEnd); err != nil { return err } return nil } Loading Loading @@ -129,3 +135,11 @@ func (m *Match) MatchTerminate(ctx context.Context, logger runtime.Logger, db *s return state } func eventSessionStart(ctx context.Context, logger runtime.Logger, evt *api.Event) { logger.Printf("session start %v %v", ctx, evt) } func eventSessionEnd(ctx context.Context, logger runtime.Logger, evt *api.Event) { logger.Printf("session end %v %v", ctx, evt) }
server/api.go +1 −1 Original line number Diff line number Diff line Loading @@ -177,7 +177,7 @@ func StartApiServer(logger *zap.Logger, startupLogger *zap.Logger, db *sql.DB, j grpcGatewayRouter := mux.NewRouter() // Special case routes. Do NOT enable compression on WebSocket route, it results in "http: response.Write on hijacked connection" errors. grpcGatewayRouter.HandleFunc("/", func(w http.ResponseWriter, r *http.Request) { w.WriteHeader(200) }).Methods("GET") grpcGatewayRouter.HandleFunc("/ws", NewSocketWsAcceptor(logger, config, sessionRegistry, matchmaker, tracker, jsonpbMarshaler, jsonpbUnmarshaler, pipeline)).Methods("GET") grpcGatewayRouter.HandleFunc("/ws", NewSocketWsAcceptor(logger, config, sessionRegistry, matchmaker, tracker, runtime, jsonpbMarshaler, jsonpbUnmarshaler, pipeline)).Methods("GET") // Enable stats recording on all request paths except: // "/" is not tracked at all. Loading