Skip to content

Dispatcher

Legacy v1 docs

v1 is on security fixes only. See v2 docs for the current release.

Dispatcher extends the native EventTarget and adds helper methods for the event-driven communication system. Both Core and Devices extend this class.

typescript
import { Dispatcher } from "webserial-core";

Methods

on(type, callback)

Registers an event listener and marks the event type as active.

typescript
on(type: string, callback: EventListenerOrEventListenerObject): void
javascript
device.on("serial:connected", (event) => {
  console.log("connected", event.detail);
});

off(type, callback)

Removes a previously registered event listener.

typescript
off(type: string, callback: EventListenerOrEventListenerObject): void
javascript
const handler = (e) => console.log(e.detail);
device.on("serial:message", handler);
// later...
device.off("serial:message", handler);

dispatch(type, data?)

Synchronously dispatches a SerialEvent (a CustomEvent subclass). The data value becomes event.detail.

typescript
dispatch(type: string, data?: string | number | boolean | object | null): void

dispatchAsync(type, data?, ms?)

Dispatches an event after ms milliseconds (default 100).

typescript
dispatchAsync(type: string, data?: any, ms?: number): void

serialRegisterAvailableListener(type)

Registers a new event type so it appears in availableListeners. Called internally in the Core constructor — use it in your subclass to declare custom events.

typescript
serialRegisterAvailableListener(type: string): void
javascript
// inside your subclass constructor:
this.serialRegisterAvailableListener("my-custom-event");

removeAllListeners()

Removes every listener except internal:queue and resets all listening flags to false. Useful for cleanup.

typescript
removeAllListeners(): void

Properties

availableListeners

Read-only array of { type: string; listening: boolean } objects representing all registered event types.

typescript
get availableListeners(): { type: string; listening: boolean }[]
javascript
console.table(device.availableListeners);
// [
//   { type: "serial:connected",    listening: true },
//   { type: "serial:disconnected", listening: false },
//   ...
// ]

Released under the MIT License.