Page MenuHomec4science

WebSocketAPI.ts
No OneTemporary

File Metadata

Created
Sun, Apr 28, 03:17

WebSocketAPI.ts

import * as Stomp from 'stompjs';
import * as SockJS from 'sockjs-client';
import {PilotsService} from '../_services/pilots.service';
// Manage all the WebSocket process (connect / send message / received message)
export class WebSocketAPI {
webSocketEndPoint: string = '//' + location.hostname + ':8080/ws';
data = '/data/update';
stompClient: any;
constructor(private pilotService: PilotsService) {
}
_connect() {
console.log('Initialize WebSocket Connection');
const ws = new SockJS(this.webSocketEndPoint);
this.stompClient = Stomp.over(ws);
const _this = this;
_this.stompClient.connect({}, function(frame) {
_this.stompClient.subscribe(_this.data, function(sdkEvent) {
_this.onMessageReceived(sdkEvent);
});
// _this.stompClient.reconnect_delay = 2000;
}, this.errorCallBack);
}
_disconnect() {
if (this.stompClient !== null) {
this.stompClient.disconnect();
}
console.log('Disconnected');
}
// on error, schedule a reconnection attempt
errorCallBack(error) {
console.log('errorCallBack -> ' + error);
setTimeout(() => {
this._connect();
}, 5000);
}
/**
* Send message to sever via web socket
* @param {*} message
*/
_send(message) {
if (message == 'updateCurrent') {
this.stompClient.send('/app/updateCurrent', {}, JSON.stringify(message));
} else if (message == 'updatePassed') {
this.stompClient.send('/app/updatePassed', {}, JSON.stringify(message));
}
}
onMessageReceived(message) {
if (message.body == 'updateCurrent') {
this.pilotService.updateCurrentPilots();
} else if (message.body == 'updatePassed') {
this.pilotService.updatePassedPilots();
}
}
}

Event Timeline