用途:Bun.serve() 支持服务端 WebSocket,用于在 Bun 运行时中处理即时通信类连接,如聊天室等。
主要能力:所有进入的请求可在 fetch 处理器中通过 server.upgrade(req) 升级为 WebSocket,处理器写在 websocket 参数中。支持 open、message、close、drain、error 事件;每个处理器首参为 ServerWebSocket 实例。提供服务端发送方法 .send(),支持字符串、ArrayBuffer、TypedArray/DataView。支持在 upgrade 中附加响应头(如 Set-Cookie)与上下文数据 data,data 可通过类型标注获得类型提示。自带原生发布订阅 API:subscribe、unsubscribe、publish、isSubscribed,服务端实例也可 publish 向主题广播。支持通过 perMessageDeflate 开启逐消息压缩,或对单条消息传 true 压缩。.send() 返回数字表示结果:-1 表示入队但有背压,0 表示因连接问题丢弃,正数为已发送字节数。默认空闲 120 秒断开(idleTimeout 可配),单条消息超过 16MB 会断开(maxPayloadLength 可配)。
用法:服务端用 Bun.serve({ fetch(req, server){ server.upgrade(req); }, websocket: { message(ws,msg){ ws.send(msg); } } });客户端与浏览器一致使用 new WebSocket(url),在 Bun 中可在构造器第二参传 headers(浏览器不支持)。
限制:官方未提供收费、价格与平台支持信息;性能数据仅在资料提及的特定版本与环境下测得,不代表普遍结果。资料未提供错误处理细节与安全配置的完整说明。