LogoLogo
ChangelogGitHubTwitterGitter
v2.x
v2.x
  • Introduction
  • Overview
    • Getting started
    • Effects
    • Routing
    • Middlewares
    • Error handling
    • How does it glue​ together?
  • Advanced
    • Context
    • Server events
    • Validation
    • Streaming
    • Output interceptor
  • WebSockets
    • Getting started
    • Effects
    • Middlewares
    • Error handling
    • Connections handling
  • API Reference
    • core
      • bindTo
      • createServer
      • combineRoutes
      • createContextToken
      • EffectFactory
      • r.pipe
      • httpListener
      • operator: matchEvent
      • operator: use
    • websockets
      • webSocketListener
      • operator: broadcast
      • operator: mapToServer
    • middleware-body
    • middleware-logger
    • middleware-io
    • middleware-jwt
      • Token signing
    • middleware-joi
    • middleware-cors
    • middleware-multipart
  • Other
    • Migration from version 1.x
    • Changelog
    • FAQ
Powered by GitBook
On this page
  • Installation
  • Bootstrapping
  1. WebSockets

Getting started

PreviousWebSocketsNextEffects

Last updated 5 years ago

Installation

$ npm i @marblejs/websockets

or if you are a hipster:

$ yarn add @marblejs/websockets

Bootstrapping

Like the WebSocket module defines a similar way of bootstrapping the app. The includes definitions of all middlewares and WebSocket effects.

webSocket.listener.ts
const effects = [
  effect1$,
  effect2$,
  // ...
];

const middlewares = [
  middleware1$,
  middleware2$,
  // ...
];

export default webSocketListener({ effects, middlewares });

To connect the previously configured WebSocket listener, you have to create a context token first.

tokens.ts
import { createContextToken } from '@marblejs/core';
import { MarbleWebSocketServer } from '@marblejs/websockets';

export const WebSocketServerToken = createContextToken<MarbleWebSocketServer>();

Then all you have to do is to register the defined module inside createServer dependencies.

index.ts
import { bindTo createServer } from '@marblejs/core';
import { WebSocketServerToken } from './tokens.ts';
import httpListener from './http.listner.ts';
import webSocketListener from './webSocket.listner.ts';

const server = createServer({
  // ...
  httpListener,
  dependencies: [
    bindTo(WebSocketServerToken)(webSocketListener({ port: 8080 }).run),
  ],
  // ...
});

server.run();

You can create and run a WebSocket server by providing the port value in webSocketListener config object. You can also upgrade the currently running http server by providing noServer: true in config object or by ommiting it.

You can learn more about Marble.js Context mechanism .

If you are curious about other ways of bootstrapping the WebSocket server, reach out the chapter.

httpListener
webSocketListener
here
Server events