1 minute read

This guide shows how to migrate an Angular app from @stomp/ng2-stompjs to @stomp/rx-stomp.

Tested with Angular 7 and 13; the steps apply to Angular 7+.

See also Using rx-stomp with Angular.

Overview

  • Update TypeScript target to ES2015+ (ES6) to support rx-stomp classes.
  • Replace ng2-stompjs dependencies and symbols with rx-stomp equivalents.
  • Create a simple RxStompService and a factory to configure and activate it.
  • Update Angular DI to provide the new service.

Prerequisites

  • Angular CLI project with TypeScript configured.
  • WebSocket/STOMP endpoint available.

1) TypeScript compile target

rx-stomp uses ES6 classes. Ensure tsconfig.json has:

  • target: at least es6 (or es2015).

Example: "target": "es2017".

2) Replace dependency

Uninstall ng2-stompjs and install rx-stomp:

npm uninstall @stomp/ng2-stompjs npm i @stomp/rx-stomp 

3) Update imports and types

  • Replace InjectableRxStompConfig (ng2-stompjs) with RxStompConfig (rx-stomp).
  • You will provide your configuration object (e.g., myRxStompConfig) to RxStomp.configure.

4) Create RxStompService

Create src/app/rx-stomp.service.ts:

import { Injectable } from '@angular/core'; import { RxStomp } from '@stomp/rx-stomp'; @Injectable({ providedIn: 'root', }) export class RxStompService extends RxStomp { constructor() { super(); } } 

5) Create a factory for the service

Create src/app/rx-stomp-service-factory.ts:

import { RxStompService } from './rx-stomp.service'; import { myRxStompConfig } from './my-rx-stomp.config'; export function rxStompServiceFactory() { const rxStomp = new RxStompService(); rxStomp.configure(myRxStompConfig); rxStomp.activate(); return rxStomp; } 

If you use a custom setup (e.g., dynamic URLs, auth headers), adjust the factory accordingly before activate().

6) Update Angular DI

Remove the InjectableRxStompConfig provider from ng2-stompjs. Provide RxStompService via the factory:

providers: [ { provide: RxStompService, useFactory: rxStompServiceFactory, }, ]; 

Update imports where needed:

import { RxStompService } from './rx-stomp.service'; import { rxStompServiceFactory } from './rx-stomp-service-factory'; 

7) Adjust local imports

Replace any @stomp/ng2-stompjs service imports with the local RxStompService.

Notes

  • Keep your configuration shape compatible with RxStompConfig.
  • Ensure rxStomp.activate() is called once (the factory pattern above guarantees that).

Updated: