ブラウザからマルチキャスト通信を行う Multicast in Direct Sockets

以前紹介した ブラウザからTCPUDP通信を行えるDirect Sockets APIというものがあります。( Isolated Web Appsで動作する場合のみ使用できます
asnokaze.hatenablog.com

このDirect Sockets APIに、マルチキャスト通信を行えるようにする提案が出ています。
github.com

これによりネットワーク内の必要なノードに対して効率的にデータ送信ができるようになります。

簡単に Explainerを眺めておく。

ユースケース

  • 送信者から、ネットワーク内の複数ノードへの動画データの送信
  • mDNSを用いたネットワーク内の特定端末のディスカバリ

コード例

送信例

// Params that sender and receiver are agreed upon.
var PORT = 12345;
var MULTICAST_GROUP_ADDR = "239.0.0.1";

// Can be bound or connected socket as you like.
// This is example of connected one.
const socket = new UDPSocket({
    remoteAddress: MULTICAST_GROUP_ADDR,
    remotePort: PORT,
    // How much network hops are allowed until the packet is discarded.
    multicastTimeToLive: 5,
    // For debug purposes, send this datagram also back to this machine.
    multicastLoopback: true
});

const encoder = new TextEncoder();
const { writable, remoteAddress, remotePort, localAddress, localPort } = await socket.opened;

const writer = writable.getWriter();
await writer.ready;

for (let i = 0; i < 3; i++) { 
    await writer.write({data: encoder.encode(`message from CLIENT = ${i}`)});
}