UNPKG

@hapiness/core

Version:

Project to have a HapiJS (https://hapijs.com/) based framework to create easier NodeJS back-end with some awesome features

81 lines (80 loc) 2.02 kB
/// <reference types="node" /> import { Observable, Subject } from 'rxjs/Rx'; import { server, request } from 'websocket'; import { Socket } from './socket'; import { SocketConfig } from './extension'; import * as http from 'http'; import * as https from 'https'; export declare class WebSocketServer { private config; private server; private connections$; private sockets; private httpServer; private rooms; private secure; constructor(config: SocketConfig); start(): void; /** * Close all sockets and close http server * * @returns Observable */ stop(): Observable<boolean>; /** * Get Http Server Extension instance * @FIXME Just take the first HapiJS connection for now */ private getHttpServerExt(); /** * Create Http Server for websocket * * @returns http */ private createHttpServer(); /** * Resquest handler * Accept the request * * @param {request} _request */ private onRequestHandler(_request); /** * Configure a secure callback * to accept/reject requests * * @param {(request:request)=>Observable<boolean>} secure * @returns Subject */ configure(secure: (request: request) => Observable<boolean>): Subject<Socket>; /** * Get connections Subject * * @returns Subject */ connections(): Subject<Socket>; /** * Get active sockets * * @returns Socket */ getSockets(): Socket[]; /** * Broadcast data into active sockets * * @param {string} event * @param {any} data */ broadcast(event: string, data: any): void; /** * Send a message to all sockets present in a room * * @param {string} room * @param {string} event * @param {any} data * @returns WebSocketServer */ to(room: string, event: string, data: any): this; getServer(): server; getHttpServer(): http.Server | https.Server; }