vulcainjs-websocket
TypeScript icon, indicating that this package has built-in type declarations

0.0.4 • Public • Published

vulcainjs-websocket

This plugin add WebSocket integration to vulcainjs framework.

Installation

$ npm install vulcainjs-websocket

About

This is a small plugin for the vulcainjs server framework for seamless WebSocket protocol integration. It accepts WebSocket connections.

Usage

First of all create your vulcain project. When your project are created install the plugin npm install vulcainjs-websocket.

Create a socket event

Create a folder ws into src directory. All the class in this folder will be inject into your application.

Explanation

For create a socket event we need to create an Injectable class. And implement an IWs interface. The annotation Injectable will permit to autoload this class with the DI.

@Injectable(LifeTime.Singleton, 'WSChatMessage')
export class WSChatMessage implements IWs { }

WSChatMessage.ts

Example of implementation for a chat messaging.

import { Injectable, LifeTime } from "vulcain-corejs/dist";
import { IWs } from 'vulcainjs-websocket/dist';

@Injectable(LifeTime.Singleton, 'WSChatMessage')
export class WSChatMessage implements IWs {

    // https://socket.io/docs/server-api/#socket
    private socket: any;

    // https://socket.io/docs/server-api/#server
    private io: SocketIO.Server;


    init(io: SocketIO.Server, socket: SocketIO.Socket) {
        this.io = io;
        this.socket = socket;
    }

    onCall(msg: any): void {
        console.log('WSChatMessage onCall :', msg);
        // Send event for all 
        this.io.emit('new-msg-arrived', msg);
    }
    onSetRoomName(): string {
        throw new Error("Method not implemented.");
    }

    /**
     * This method is for listening event will be called with the return string
     * https://socket.io/docs/server-api/#socket-on-eventname-callback
     */
    onSetEventName(): string {
        return 'chat-message';
    }

}

The architecture should be like this.

| src
    | api
        | ...
    | ws
        | chat
            | WSChatMessage.ts

Implement all sockets

Now you have created an socket listener event and sender. You need to setup your vulcain project. On the startup.ts file add this following lines into initializeServices method.

initializeServices(container: IContainer) {
        // Register custom services from a specific folder
        // this.injectFrom("...");
        container.injectSingleton(WebSocketService); // Inject the WebSocketService
        //ws is the path where you will put all your webSocket.
        this.injectFrom("ws");
    }

After that you need to init the socket connection. Update yhe onServerStarted method into startup.ts file.

 onServerStarted(server, adapter) {

        let wsService = this.container.get<WebSocketService>('WebSocketService');

        //
        let allMyWebSocket = ['WSChatMessage'];
        //let allMyWebSocket = ['WSChatMessage', 'AnotherWS', 'AnotherWS', ...];


        wsService.start(this.container, server, allMyWebSocket);
    }

When you create a new WebSocket class you need to put it into the allMyWebSocket variable. The string value is the value name of Injectable name.

@Injectable(LifeTime.Singleton, 'TheNameOfWebSocketClass')

Package Sidebar

Install

npm i vulcainjs-websocket

Weekly Downloads

0

Version

0.0.4

License

Apache-2.0

Last publish

Collaborators

  • workfel