📜  Node.js socket.dropMembership() 方法(1)

📅  最后修改于: 2023-12-03 14:44:40.235000             🧑  作者: Mango

Node.js socket.dropMembership() 方法

简介

socket.dropMembership() 方法用于从多播组中删除一个主机。这个方法仅仅用于 UDP 类型的 Socket,而且仅仅在主机以前添加到一个多播组中时可以调用。

语法

以下是 socket.dropMembership() 方法的语法:

socket.dropMembership(multicastAddress[, multicastInterface])
参数

multicastAddress:被删除的多播组IP地址,必须是一个合法的 IPv4 或 IPv6 地址。

multicastInterface:可选,代表网络接口 IP 的字符串或者数值。如果提供,socket 会离开这个多播组在这个网络接口上。

返回值

该方法没有返回值。

示例

下面是一个例子,展示如何使用 socket.dropMembership() 方法:

const dgram = require('dgram');

const socket = dgram.createSocket('udp4');

const MULTICAST_ADDR = '239.255.255.250';
const MULTI_PORT = 5000;

// 加入多播组
socket.addMembership(MULTICAST_ADDR);

// 监听消息
socket.on('message', (msg, rinfo) => {
  console.log(`接收到来自 ${rinfo.address}:${rinfo.port} 的消息:${msg}`);
});

// 发送消息
const message = 'Hello, Multicast!';
socket.send(message, MULTI_PORT, MULTICAST_ADDR);

// 5 秒后离开多播组
setTimeout(() => {
  socket.dropMembership(MULTICAST_ADDR);
  console.log('离开多播组');
}, 5000);

以上代码使用 dgram.createSocket() 方法创建了一个 UDP Socket,并通过 addMembership() 方法加入了一个多播组。send() 方法用于向多播组发送消息。5 秒后调用 dropMembership() 方法离开多播组。

注意事项

使用该方法时需要注意以下几点:

  • 在你调用 addMembership() 之前,必须为 socket 绑定一个网络接口以便让 socket 监听在这个接口上。
  • 必须为每个多播组地址单独调用一次 dropMembership() 方法,以便在网络接口上离开这个多播组。

参考文献: