本文へ移動

Server の仕様

Server は API、WebSocket、イベント、設定、ライフサイクルへ直接アクセスするための低レベル API です。

ts
class Server<RequestNameList extends string = string, WebSocketNameList extends string = string>

型付きの登録キー

ts
type API = "GET:/health" | "POST:/messages";
type WS = "/ws";

const server = new Server<API, WS>({
    root: import.meta.dirname,
    public: "../public/main",
});

ライフサイクル

メソッド仕様
start(options?)起動し、Node.js の http.Server を返す。起動済み・起動処理中なら警告して undefined を返す
listen(options?)start() のエイリアス
stop()WebSocket と HTTP サーバーを停止。停止済み・停止処理中なら何もしない
close()stop() のエイリアス
isRunning()管理中の HTTP サーバーがあるかを返す
getPort()現在の設定上のポートを返す。起動後は実際の待受ポートに更新される
getHttpServer()HTTP サーバーを返す。未起動・停止後は null
getConfig(key)解決済みの設定値を返す

signalClosetrue の場合、起動時に SIGINTSIGTERM の停止ハンドラーを登録し、停止時に解除します。

停止処理では idle HTTP 接続を閉じ、10 秒以内に終了しない接続は closeAllConnections() で終了します。WebSocket は先に close code 1001 で閉じ、3 秒後も残るクライアントを強制終了します。

API レジストリ

メソッド仕様
onApi(key, handler)ハンドラーを登録し、解除関数を返す
onceApi(key, handler)最初の実行前に登録を解除するハンドラーを登録
offApi(key)登録を解除
hasApi(key)登録済みか確認
emitApi(key, data)ハンドラーを直接実行し、結果を Promise で返す

API レジストリは 1 キーにつき 1 ハンドラーです。再登録は上書きになります。

WebSocket レジストリ

onWebSocketonceWebSocketoffWebSockethasWebSocket を使用します。API レジストリと同様に、1 パスにつき 1 ハンドラーです。

イベント

公開イベントは現在 server/log:* です。onEventonceEvent は解除関数を返し、同じイベントへ複数のリスナーを登録できます。offEvent(event, handler) は指定したリスナーだけを解除します。