Comprehensive Guide to UDP/Datagram Sockets in Node.js

The node:dgram module provides a full implementation of UDP (User Datagram Protocol) sockets in Node.js. . UDP is a lightweight, connectionless protocol ideal for real‑time applications such as VoIP, gaming, telemetry, IoT, and multicast/broadcast systems. This module exposes APIs for creating sockets, sending and receiving datagrams, joining multicast groups, managing buffer sizes, and controlling low‑level socket behavior.

UDP / Datagramdgram.Socketsocket.bind / socket.sendMulticast / BroadcastTTL / Buffer sizes

~2 min read · Updated Dec 30, 2025

1. Introduction


The node:dgram module enables UDP networking in Node.js. It supports IPv4 and IPv6, multicast, broadcast, and both connectionless and connected UDP modes.


2. Creating a UDP Socket


const dgram = require('node:dgram');
const server = dgram.createSocket('udp4');

3. Core Events


3.1 'error'


Emitted when any socket error occurs.

3.2 'message'


Emitted when a datagram is received.

3.3 'listening'


Emitted when the socket is bound and ready.

3.4 'close'


Emitted after socket.close() is called.

3.5 'connect'


Emitted after a successful socket.connect() call.


4. Binding a Socket


Binding makes the socket ready to receive datagrams.

socket.bind(41234);

5. Sending Datagrams


UDP supports sending Buffers, strings, TypedArrays, DataViews, or arrays of Buffers.


5.1 Connectionless Send


client.send(message, 41234, 'localhost');

5.2 Connected UDP


client.connect(41234, 'localhost', () => {
  client.send(message);
});

6. Multicast Support


6.1 Joining a Multicast Group


socket.addMembership('224.0.0.114');

6.2 Source‑Specific Multicast


socket.addSourceSpecificMembership(source, group);

6.3 Leaving Multicast Groups


socket.dropMembership(address);
socket.dropSourceSpecificMembership(source, group);

7. Broadcast Support


socket.setBroadcast(true);

8. Buffer and Queue Management


  • socket.getRecvBufferSize()
  • socket.getSendBufferSize()
  • socket.setRecvBufferSize(size)
  • socket.setSendBufferSize(size)
  • socket.getSendQueueSize()
  • socket.getSendQueueCount()

9. TTL and Multicast TTL


  • socket.setTTL(ttl): For unicast.
  • socket.setMulticastTTL(ttl): For multicast.

10. Multicast Interface Selection


Specify outgoing interface for multicast traffic.

socket.setMulticastInterface('10.0.0.2'); // IPv4
socket.setMulticastInterface('::%eth0');  // IPv6

11. Unref and Ref


Control whether the socket keeps the Node.js process alive.

socket.unref();
socket.ref();

12. Blocklists


Block inbound or outbound traffic to specific IPs or ranges.

receiveBlockList: new net.BlockList()
sendBlockList: new net.BlockList()

13. AbortSignal Support


Abort a socket using AbortController.

const controller = new AbortController();
const server = dgram.createSocket({ type: 'udp4', signal: controller.signal });
controller.abort();

14. Datagram Size Limitations


UDP datagrams are limited by MTU and protocol constraints:

  • Max theoretical payload: ~65 KB
  • IPv4 recommended MTU: 576 bytes
  • IPv6 minimum MTU: 1280 bytes

15. dgram.createSocket()


Supports options such as:

  • type: 'udp4' or 'udp6'
  • reuseAddr / reusePort
  • ipv6Only
  • recvBufferSize / sendBufferSize
  • lookup custom DNS resolver
  • signal AbortSignal
  • receiveBlockList / sendBlockList

Conclusion


The node:dgram module provides a complete, low‑level API for building high‑performance UDP applications in Node.js. With support for multicast, broadcast, connected UDP, buffer management, TTL control, blocklists, and AbortSignal integration, it is ideal for real‑time systems, distributed applications, and network‑level tooling.


Written & researched by Dr. Shahin Siami

Related Articles

آشنایی کامل با ماژول Cluster در Node.js و نحوه افزایش مقیاس‌پذیری سرور

ماژول Cluster در Node.js به توسعه‌دهندگان اجازه می‌دهد چندین پردازش همزمان ایجاد کنند که یک پورت سرور را به اشتراک می‌گذارند. این کار باعث استفاده بهتر از هسته‌های CPU و افزایش توان پردازش برنامه می‌شود. در این مقاله نحوه کار Cluster، مدیریت Workerها، تنظیمات مهم و مثال عملی را بررسی می‌کنیم.

Continue

راهنمای جامع ماژول VM در Node.js (ماژول node:vm)

ماژول node:vm امکان کامپایل و اجرای کد جاوااسکریپت در کانتکست‌های ایزولهٔ V8 را فراهم می‌کند. این کانتکست‌ها مانند یک «سندباکس سبک» داخل برنامهٔ Node.js عمل می‌کنند و هرکدام globalThis مخصوص خود را دارند. این ماژول برای اجرای پویا، موتورهای قالب (Template Engines)، سیستم‌های افزونه (Plugin Systems)، REPLها و تست ایزولهٔ منطق بسیار مناسب است. اما نکتهٔ بسیار مهم: vm یک ابزار امنیتی نیست و نباید برای اجرای کدهای غیرقابل‌اعتماد استفاده شود.

Continue

راهنمای جامع ماژول V8 در Node.js (ماژول node:v8)

راهنمای جامع ماژول V8 در Node.js (ماژول node:v8)

Continue

راهنمای جامع Worker Threads در Node.js (ماژول node:worker_threads)

ماژول node:worker_threads امکان اجرای واقعی چندریسمانی (Multithreading) را در Node.js فراهم می‌کند. برخلاف مدل تک‌ریسمانی سنتی Node.js، Worker Threads اجازه می‌دهند کارهای سنگین CPU در ریسه‌های جداگانه اجرا شوند بدون اینکه حلقهٔ رویداد (Event Loop) مسدود شود. این ماژول از حافظهٔ اشتراکی، انتقال بدون کپی (Zero‑Copy)، کانال‌های پیام، Worker Pool، محدودیت منابع و ابزارهای همگام‌سازی پیشرفته پشتیبانی می‌کند. Worker Threads برای پردازش‌های محاسباتی سنگین ایده‌آل هستند، در حالی که I/O همچنان باید توسط ریسهٔ اصلی مدیریت شود.

Continue

راهنمای جامع ماژول util در Node.js

ماژول node:util مجموعه‌ای از توابع کمکی قدرتمند برای استفاده در هستهٔ Node.js و همچنین توسعهٔ برنامه‌ها ارائه می‌دهد. این ماژول ابزارهایی برای دیباگ، بازرسی اشیا، تبدیل Callback ↔ Promise، قالب‌بندی رشته‌ها، بررسی انواع، مدیریت خطاها، رمزگذاری متن، پردازش MIME، پارس آرگومان‌های CLI، سیگنال‌های Abort، و ابزارهای متفرقه فراهم می‌کند. این ماژول یکی از جعبه‌ابزارهای اصلی و ضروری برای توسعه‌دهندگان Node.js است.

Continue

راهنمای جامع ماژول URL در Node.js

ماژول node:url ابزارهایی برای تحلیل، ساخت، و دست‌کاری URLها در Node.js فراهم می‌کند. Node.js دو API برای کار با URL دارد: WHATWG URL API — استاندارد مدرن و سازگار با مرورگرها (توصیه‌شده). Legacy API — API قدیمی Node.js (غیرتوصیه‌شده). WHATWG URL API یک رابط تمیز، سازگار و قدرتمند برای کار با اجزای URL، پارامترهای query، الگوهای URL و حتی Blob URLها ارائه می‌دهد.

Continue