# @firebend/control-tower-web-socket-client

> A library receiving Control Tower Platform real time events over a web socket

Latest version **1.8.0** (published 2026-09-21) · MIT license · 0 weekly downloads

## Install

```sh
npm install @firebend/control-tower-web-socket-client
pnpm add @firebend/control-tower-web-socket-client
yarn add @firebend/control-tower-web-socket-client
bun add @firebend/control-tower-web-socket-client
```

## Health

**Score 65/100 (B)** — status: active.

Positive: has types; no vulnerabilities; has provenance; recently updated; high maintenance score.

Warnings: low downloads; no esm support.

## Facts

| | |
|---|---|
| Version | 1.8.0 |
| Published | 2026-09-21 |
| First published | 2022-04-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | bundled |
| Module format | CommonJS |
| Dependencies | 1 |
| Unpacked size | 46.3 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Provenance | attested (GitHub Actions) |
| GitHub stars | 2 |
| Maintainers | firebendwebmaster |
| Keywords | firebend, control, tower, web, socket, events |

## Links

- npm: https://www.npmjs.com/package/@firebend/control-tower-web-socket-client
- Repository: https://github.com/firebend/control-tower-web-sockets
- Homepage: https://github.com/firebend/control-tower-web-sockets#readme
- Issues: https://github.com/firebend/control-tower-web-sockets/issues
- npm.io page: https://npm.io/package/@firebend/control-tower-web-socket-client

## Dependencies (1)

- [@microsoft/signalr](https://npm.io/package/@microsoft/signalr.md) 8.0.7

## Alternatives

- [@opentelemetry/exporter-zipkin](https://npm.io/package/@opentelemetry/exporter-zipkin.md) — 14.8M weekly downloads
- [pusher-js](https://npm.io/package/pusher-js.md) — 2.0M weekly downloads
- [browserify](https://npm.io/package/browserify.md) — 1.7M weekly downloads
- [sqs-consumer](https://npm.io/package/sqs-consumer.md) — 1.7M weekly downloads
- [@sanity/eventsource](https://npm.io/package/@sanity/eventsource.md) — 930.8K weekly downloads

## Recent versions

- 1.8.0 (latest) — 2026-09-21
- 1.7.5 — 2026-09-21
- 1.7.4 — 2026-06-24
- 1.7.3 — 2026-06-24
- 1.7.2 — 2024-09-23
- 1.7.0 — 2023-06-05
- 1.6.0 — 2023-03-02
- 1.5.0 — 2022-05-03
- 1.4.0 — 2022-04-29
- 1.3.0 — 2022-04-29
- 1.2.0 — 2022-04-28
- 1.1.3 — 2022-04-28
- 1.1.1 — 2022-04-28
- 1.0.1 — 2022-04-28

## README

# web-socket-client

This library was generated with [Nx](https://nx.dev).

It allows clients to connected to Control Tower's Real Time Event platform. 

## Running unit tests

Run `nx test web-socket-client` to execute the unit tests via [Jest](https://jestjs.io).

## Running lint

Run `nx lint web-socket-client` to execute the lint via [ESLint](https://eslint.org/).

# Examples

## Connecting and Listening to All Events for a Given Entity

### This snippet will register an event handler for any load change.

```javascript
realTimeEventFactory('insert url')
  .withAccessToken('insert token or token promise')
  .startAsync()
  .then(builder => {
    builder.onAll('loads', event => {
      console.log('A load event triggered!', event.trigger)
    });
  });
```
## Connecting and Listening to a Specific Trigger for a Given Entity

### This snippet registers a handler to only receive modification events for the load entity.

```javascript
realTimeEventFactory('insert url')
  .withAccessToken('insert token or token promise')
  .startAsync()
  .then(builder => {
    builder.on('loads', triggers => {
      triggers
        .on('Modified')
        .withEventHandler(event => {
          console.log('A load was modified!', event.eventTime)
        })
    });
  });
```

### Connecting and Listening to a Specific Trigger With a Filter for a Given Entity

### This snippet registers a handler to receive Created triggers and Modified triggers. The modified trigger has a filter to only fire when the load status or any stop in the stop array has been altered.

```javascript
realTimeEventFactory('insert url')
  .withAccessToken('insert token or token promise')
  .startAsync()
  .then(builder => {
    builder.on('loads', triggers => {
      triggers
        .onTrigger('Created')
        .onTrigger('Modified', filters => {
          filters.withFilter('/loadStatus')
            .withFilter('/stops/*')
        })
        .withEventHandler(event => {
          console.log('A load event was triggered!', event.trigger)
        })
    });
  });
```

---
_Source: https://npm.io/package/@firebend/control-tower-web-socket-client · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
