Skip to content

Bun.serve を使用してシンプルな WebSocket サーバーを起動します。

fetch 内で、受信した ws: または wss: リクエストを WebSocket 接続にアップグレードしようとします。

ts
const server = Bun.serve({
  fetch(req, server) {
    const success = server.upgrade(req);
    if (success) {
      // Bun はアップグレードが成功すると自動的に
      // 101 Switching Protocols を返します
      return undefined;
    }

    // HTTP リクエストを通常通り処理
    return new Response("Hello world!");
  },
  websocket: {
    // TypeScript: ws.data の型をこのように指定します
    data: {} as { authToken: string },

    // メッセージを受信したときに呼び出されます
    async message(ws, message) {
      console.log(`${message} を受信しました`);
      // メッセージを送信
      ws.send(`あなたはこう言いました:${message}`);
    },
  },
});

console.log(`${server.hostname}:${server.port} でリッスンしています`);

Bun by www.bunjs.com.cn 編集