# ddp-node-ws

> A small wrapper library to accelerate your implememtation of the websocket behavior for DDP use cases

Latest version **1.0.2** (published 2018-03-28) · MIT license · 0 weekly downloads

## Install

```sh
npm install ddp-node-ws
pnpm add ddp-node-ws
yarn add ddp-node-ws
bun add ddp-node-ws
```

## Health

**Score 15/100 (F)** — status: abandoned.

Positive: no vulnerabilities.

Warnings: low downloads; no types; no esm support.

Negative: abandoned; low maintenance score.

## Facts

| | |
|---|---|
| Version | 1.0.2 |
| Published | 2018-03-28 |
| First published | 2018-03-28 |
| Weekly downloads | 0 |
| License | MIT |
| TypeScript types | none |
| Module format | CommonJS |
| Dependencies | 3 |
| Unpacked size | 16.7 KB |
| Known vulnerabilities | 0 |
| Install scripts | no |
| Author | Theo Dammaretz |
| Maintainers | blightwidow |

## Links

- npm: https://www.npmjs.com/package/ddp-node-ws
- npm.io page: https://npm.io/package/ddp-node-ws

## Dependencies (3)

- [express](https://npm.io/package/express.md) ^4.16.2
- [express-ws](https://npm.io/package/express-ws.md) ^3.0.0
- [@types/express](https://npm.io/package/@types/express.md) ^4.11.1

## Recent versions

- 1.0.2 (latest) — 2018-03-28
- 1.0.0 — 2018-03-28

## README

# DDP websocket library

This is a simple library for Node to simplfy the implementation of the web socket API for [Use cases](https://git.bcgplatinion.io/bcggroup/ddp-galactica/blob/master/docs/USE-CASE-GUIDELINE.md).

The library is uses as follow: 

```js
const ws = require('ddp-node-ws');
const app = require('express')();
const wsServer = new ws.Server(app);

wsServer.ws("/url", (wsobject) => {
    console.log('New computation requested');
    ...
    wsobject.sendUpdate({}, phaseNumber);
    ...
    wsobject.sendResult({}, phaseNumber, true);
}, (wscobject) => {
    console.log('Computation continuation requested');
    if notAbleToContinue {
        wscobject.notPossibleToContinue();
    }
    ...
    wscobject.sendUpdate({}, phaseNumber);
    ...
    wscobject.sendResult({}, phaseNumber, true);
});

app.listen(3000);
```

## Web socket server

The web socket server. This object handle endpoint management and generate the web socket objects. It exposes only one method: 

__ws(path: string, onStart: (wso: WebSocketObject) => void, onContinue: (wsco: WebSocketContinueObject) => void)__
- `path`: the enpoint path
- `onStart`: A function that will process the request of a new computation through a web socket object (see below).
- `onContinue`: A function that will process the request of a new computation through a web continueation socket object (see below).

## Web socket object

A websocket object is passed for each new websocket initiliazed. This object expose two methods

__sendUpdate(data: object, phase: number = 0)__
- `data`: An object with the update status of the computation
- `phase`: An integer designating the phase of the status update

__sendResult(data: object, phase: number = 0, lastPhase: boolean = false)__
- `data`: An object with the update status of the computation
- `phase`: An integer designating the phase of the status update
- `lastPhase`: A flag indicating this is the last result report and the computation is over. This will terminate the websocket.

## Web socket continuation object

This object is an extension of the the `Web socket object`. It is passed only on a continuation request. It exposes the same methods plus one:

__notPossibleToContinue()__
Closes the websocket indicating that the continuation was not possible.

---
_Source: https://npm.io/package/ddp-node-ws · Machine-readable twin of the npm.io package page. Health data is recomputed on every publish._
