Options
All
  • Public
  • Public/Protected
  • All
Menu

Class HazelUDPSocket

Implementation of the Hazel base protocol with a raw UDP transport.

This handles things such as different packet types, as well as sending acknowledgements and pings.

No parsing is done to the inner packets to maintain separation of concerns. You should be able to use this with any Hazel-based backed without trouble.

The main methods you'll be using are:

  • send and sendReliable for sending messages
  • connect and disconnect for, well, connecting and disconnecting
  • on to listen for the message event

In 99% of use cases you'll also want @among-js/data for packet type enums and more, as well as bytebuffer for a nice buffer library.

example
import { HazelUDPSocket } from '@among-js/hazel'
import { PacketType } from '@among-js/data'
import ByteBuffer from 'bytebuffer'

const socket = new HazelUDPSocket('udp4')

socket.on('message', (buffer) => {
  console.log(buffer.toDebug(true))
})

// Send an empty hello packet
await socket.sendReliable(PacketType.Hello, new ByteBuffer(0))

Hierarchy

  • EventEmitter
    • HazelUDPSocket

Index

Constructors

constructor

  • Parameters

    • type: dgram.SocketType

      Type of socket, for now this should always be udp4

    Returns HazelUDPSocket

Properties

Static defaultMaxListeners

defaultMaxListeners: number

Static Readonly errorMonitor

errorMonitor: unique symbol

This symbol shall be used to install a listener for only monitoring 'error' events. Listeners installed using this symbol are called before the regular 'error' listeners are called.

Installing a listener using this symbol does not change the behavior once an 'error' event is emitted, therefore the process will still crash if no regular 'error' listener is installed.

Methods

addListener

  • addListener(event: string | symbol, listener: (...args: any[]) => void): this
  • Parameters

    • event: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

connect

  • connect(port: number, ip?: undefined | string): Promise<unknown>
  • Bind the socket to an ip and port.

    Parameters

    • port: number

      Port

    • Optional ip: undefined | string

      IPV4 address

    Returns Promise<unknown>

disconnect

  • disconnect(): Promise<void>
  • Disconnect cleanly by sending a disconnect packet and waiting for a response. Otherwise the next time we try to connect the server won't respond to the hello.

    https://wiki.weewoo.net/wiki/Protocol#Disconnect

    Returns Promise<void>

emit

  • emit(event: string | symbol, ...args: any[]): boolean
  • Parameters

    • event: string | symbol
    • Rest ...args: any[]

    Returns boolean

eventNames

  • eventNames(): Array<string | symbol>
  • Returns Array<string | symbol>

getMaxListeners

  • getMaxListeners(): number

listenerCount

  • listenerCount(type: string | symbol): number
  • Parameters

    • type: string | symbol

    Returns number

listeners

  • listeners(event: string | symbol): Function[]
  • Parameters

    • event: string | symbol

    Returns Function[]

off

  • off(event: string | symbol, listener: (...args: any[]) => void): this
  • Parameters

    • event: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

on

  • on(event: "message", cb: (buffer: ByteBuffer) => void): this
  • Parameters

    • event: "message"
    • cb: (buffer: ByteBuffer) => void
        • (buffer: ByteBuffer): void
        • Parameters

          • buffer: ByteBuffer

          Returns void

    Returns this

once

  • once(event: string | symbol, listener: (...args: any[]) => void): this
  • Parameters

    • event: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

prependListener

  • prependListener(event: string | symbol, listener: (...args: any[]) => void): this
  • Parameters

    • event: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

prependOnceListener

  • prependOnceListener(event: string | symbol, listener: (...args: any[]) => void): this
  • Parameters

    • event: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

rawListeners

  • rawListeners(event: string | symbol): Function[]
  • Parameters

    • event: string | symbol

    Returns Function[]

removeAllListeners

  • removeAllListeners(event?: string | symbol): this

removeListener

  • removeListener(event: string | symbol, listener: (...args: any[]) => void): this
  • Parameters

    • event: string | symbol
    • listener: (...args: any[]) => void
        • (...args: any[]): void
        • Parameters

          • Rest ...args: any[]

          Returns void

    Returns this

send

  • send(bb: ByteBuffer): Promise<unknown>
  • Wrapper for asyncronously sending raw packets.

    Parameters

    • bb: ByteBuffer

      Data as a byte buffer

    Returns Promise<unknown>

sendReliable

  • sendReliable(sendOption: PacketType, data: ByteBuffer): Promise<void>
  • Helper for sending reliable packer. Automatically handles waiting for acknowledgements and incrementing the reliable id. https://wiki.weewoo.net/wiki/Protocol#Reliable_Packets

    Parameters

    • sendOption: PacketType

      Type of packet to send

    • data: ByteBuffer

      Data as a byte buffer

    Returns Promise<void>

setMaxListeners

  • setMaxListeners(n: number): this

Static listenerCount

  • listenerCount(emitter: EventEmitter, event: string | symbol): number
  • deprecated

    since v4.0.0

    Parameters

    • emitter: EventEmitter
    • event: string | symbol

    Returns number

Generated using TypeDoc