Natural Pacifist Manatees

    dgram-as-promised
    TypeScript icon, indicating that this package has built-in type declarations

    5.0.1 • Public • Published

    dgram-as-promised

    Build Status Coverage Status npm

    This module provides promisified version of standard dgram class. The API is the same as for standard dgram, except bind, close and send methods which return Promise object.

    Requirements

    This module requires ES6 with Node >= 10.

    Installation

    npm install dgram-as-promised

    Additionally for Typescript:

    npm install -D @types/node

    Usage

    dgram-as-promised can be used similar to standard dgram module.

    Example:

    const {DgramAsPromised} = require("dgram-as-promised")
     
    const socket = DgramAsPromised.createSocket("udp4")
     
    const MEMBERSHIP = "224.0.0.1"
    const PORT = 41234
     
    const message = Buffer.from("ABCDEFGH")

    Typescript:

    import DgramAsPromised from "dgram-as-promised"
    // or
    import {DgramAsPromised} from "dgram-as-promised"
     
    const socket = DgramAsPromised.createSocket("udp4")

    bind

    Method bind returns Promise object which resolves to address info when listening event is emitted.

    const address = await socket.bind()
    console.log(`Socket is listening on ${address.address}:${address.port}`)
     
    socket.setBroadcast(true)
    socket.setMulticastTTL(128)
     
    socket.addMembership(MEMBERSHIP)
    console.log("Membership is set")

    send

    Method send returns Promise object which is fulfilled when message has been sent.

    const bytes = await socket.send(message, 0, message.length, PORT, MEMBERSHIP)
    console.log(`Message is sent (${bytes} bytes)`)

    recv

    Method recv returns Promise object which resolves to the object with msg and rinfo properties as from message event or resolves to undefined when socket is already closed.

    const packet = await socket.recv()
    if (packet) {
      console.log(`Received message: ${packet.msg.toString()}`)
      console.log(`Received ${packet.rinfo.size} bytes`)
    }

    close

    Method close returns Promise object which resolves when close event is emitted.

    await socket.close()
    console.log("Socket is closed")

    iterate

    Method iterate and the socket object return asynchronous iterator which will call recv method until socket is closed.

    for await (const packet of socket) {
      console.info(packet.msg.toString())
      // Close socket if Ctrl-D is in the message
      if (packet.msg.indexOf(4) !== -1) {
        await socket.close()
      }
    }

    destroy

    Method destroy cleans internal listeners.

    socket.destroy()

    License

    Copyright (c) 2016-2020 Piotr Roszatycki mailto:piotr.roszatycki@gmail.com

    MIT

    Keywords

    Install

    npm i dgram-as-promised

    DownloadsWeekly Downloads

    176

    Version

    5.0.1

    License

    MIT

    Unpacked Size

    33.9 kB

    Total Files

    14

    Last publish

    Collaborators

    • dex4er