Socket Server Extension
October 16, 2017 · View on GitHub
Usage
Hapiness.bootstrap(Module,
[
SocketServerExt.setConfig({...})
]
);
Configuration:
{
port: number;
autoAcceptConnections?: boolean;
keepaliveInterval?: number;
keepaliveGracePeriod?: number;
closeTimeout?: number;
}
Extension provider
...
constructor(@Inject(SocketServerExt) private server: WebSocketServer) {}
...
Allow to get the hapi server instance
Extension service
...
constructor(private server: SocketServerService) {}
...
Socket
Socket object provided when a new connection comes in the ServerSocket
- methods
on$- Listen new event with an Observableon- Add listener on a new event coming from the socketonBytes- Add listener on a new binary data coming from the socketemit- Send data into the socketemitBytes- Send binary dataclose- Close the socketjoin- Join roomleave- Leave a room
WebSocketServer
WebSocket server
- methods
configure- Allow to configure a secure callback to accept new request- arguments: request => Observable<boolean>
- return: connections()
connections- Observable providing accepted requests- return: Subject<Socket>
getSockets- Return all active sockets- return: Socket[]
broadcast- Broadcast data to all active sockets- arguments: (event: string, data: any)
getServer- Return websocket server instanceto- Emit a message to a room
Example
@HapinessModule({
version: 'x.x.x',
providers: [ SocketServerService ]
})
class SocketServerModule implements OnStart {
constructor(private server: SocketServerService) {}
onStart() {
this
.server
.configure(req => Observable.of(true)) // accept requests
.subscribe(
socket => {
socket.on('message', _ => console.log(_));
socket.emit('message', 'Hello World!');
this.server.broadcast('join', 'Hello World!')
}
);
});
}
}
Hapiness.bootstrap(Module,
[
SocketServerExt.setConfig({ port: 1234 })
]
);