绑定 UDP 套接字 (Bun.udpSocket())
要创建一个新的(已绑定的)UDP 套接字:
发送数据报
指定要发送的数据、目标端口和目标地址。send 不执行 DNS 解析,因为它用于低延迟操作。
接收数据报
创建套接字时,添加一个data 回调来处理传入的数据包:
server.ts
连接
UDP 没有连接的概念,但许多 UDP 通信(尤其是作为客户端时)只涉及一个对等方。在这种情况下,你可以将套接字连接到该对等方,这会为你发送的每个数据包设置目标地址,并限制传入的数据包只来自该对等方。server.ts
使用 sendMany() 一次发送多个数据包
要一次发送大量数据包而无需每次调用系统调用,可以使用 sendMany() 进行批处理。
对于未连接的套接字,sendMany 接收一个数组作为其唯一参数。每三个数组元素描述一个数据包:要发送的数据、目标端口和目标地址。
server.ts
sendMany 接收一个数组,其中每个元素是要发送给对等方的数据。
server.ts
sendMany 返回成功发送的数据包数量。与 send 一样,它只接受有效的 IP 地址作为目标,不执行 DNS 解析。
处理背压
你发送的数据包可能无法放入操作系统的数据包缓冲区。当以下情况发生时可检测到:send返回falsesendMany返回的数字小于你指定的数据包数量。在这种情况下,Bun 会在套接字再次可写时调用drain套接字处理器:
套接字选项
UDP 套接字支持设置各种套接字选项:多播
Bun 支持 UDP 套接字的多播操作。使用addMembership 和 dropMembership 加入和离开多播组:
addSourceSpecificMembership 和 dropSourceSpecificMembership: