- Implement rpc_find_match Nakama RPC function - Search for existing authoritative TicTacToe matches via MatchList - Return first match with available slot (size < 2) - Create new match using MatchCreate when none available - Add request/response structs for future extensibility - Log match search, selection, and creation flow - Gracefully handle optional JSON payload and invalid input
45 lines
1.0 KiB
Go
45 lines
1.0 KiB
Go
package main
|
|
|
|
import (
|
|
"context"
|
|
"database/sql"
|
|
|
|
"github.com/heroiclabs/nakama-common/runtime"
|
|
)
|
|
|
|
func HelloWorld(
|
|
ctx context.Context,
|
|
logger runtime.Logger,
|
|
db *sql.DB,
|
|
nk runtime.NakamaModule,
|
|
payload string,
|
|
) (string, error) {
|
|
logger.Info("HelloWorld RPC called — payload: %s", payload)
|
|
return `{"message": "Hello from Go RPC!"}`, nil
|
|
}
|
|
|
|
// Required module initializer
|
|
func InitModule(
|
|
ctx context.Context,
|
|
logger runtime.Logger,
|
|
db *sql.DB,
|
|
nk runtime.NakamaModule,
|
|
initializer runtime.Initializer,
|
|
) error {
|
|
if err := initializer.RegisterRpc("hello_world", HelloWorld); err != nil {
|
|
logger.Error("Failed to register RPC: %v", err)
|
|
return err
|
|
}
|
|
if err := initializer.RegisterMatch("tictactoe", NewMatch); err != nil {
|
|
logger.Error("Failed to register RPC: %v", err)
|
|
return err
|
|
}
|
|
if err := initializer.RegisterRpc("rpc_find_match", rpcFindMatch); err != nil {
|
|
logger.Error("RegisterRpc rpc_find_match failed: %v", err)
|
|
return err
|
|
}
|
|
|
|
logger.Info("Go module loaded successfully!")
|
|
return nil
|
|
}
|