Skip to main content
Bun 的 TCP API 属于底层 API,面向库作者和高级使用场景。

启动服务器(Bun.listen()

使用 Bun.listen 启动 TCP 服务器:
server.ts
在 Bun 中,你可以为每个服务器声明一组处理函数,而不是像 Node.js 的 EventEmitter 或符合 Web 标准的 WebSocket API 那样,为每个套接字分别分配回调。
server.ts
对于性能敏感的服务器,为每个连接分配监听器会造成显著的垃圾回收压力并增加内存使用。相比之下,Bun 仅为每种事件分配一个处理函数,并在所有连接间共享。这是一个小优化,但积少成多。
open 处理函数中为套接字附加上下文数据。
server.ts
要启用 TLS,传入包含 keycert 字段的 tls 对象。
server.ts
keycert 字段期望的是 TLS 私钥和证书的内容。类型可以是字符串、BunFileTypedArrayBuffer
server.ts
Bun.listen 返回一个符合 TCPSocketListener 接口的服务器。
server.ts

创建连接(Bun.connect()

使用 Bun.connect 连接到 TCP 服务器。通过 hostnameport 指定服务器。TCP 客户端可以定义与 Bun.listen 相同的一组处理器,此外还可以定义一些客户端专用的处理器。
server.ts
要启用 TLS,设置 tls: true

热重载

TCP 服务器和连接都能热重载新的处理器。

缓冲

Bun 中的 TCP sockets 不会缓冲数据,因此对性能敏感的代码应自行缓冲写入。例如:
性能会明显差于:
要缓冲写入,请将 Bun 的 ArrayBufferSink{stream: true} 选项结合使用:
server.ts
缓冲合并(Corking)计划支持缓冲合并功能,但目前必须通过 drain 事件手动管理背压。