lemo-crm/web/app/services/websocket.js

43 lines
1.3 KiB
JavaScript

import Service from '@ember/service';
import { aliasMethod } from '@ember/object';
import $ from 'jquery';
export default Service.extend({
connect() {
let me = this;
if (me.get('connected')) {
console.info('Websocket is connected, reconnect.');
me.disconnect();
}
// connect
if (!me.get('stompClient')) {
me.set('stompClient', Stomp.over(new SockJS('/stomp')));
}
me.get('stompClient').connect({}, function() {
console.info('Connect websocket.');
me.stompClient.subscribe('/topic/websocket', function(msg) {
console.info('On websocket message: ', msg);
$.trigger('websocket', JSON.parse(msg.body));
});
me.set('connected', true);
console.info('Websocket connected.');
});
},
willDestroy() {
var me = this;
me._super(...arguments);
if (me.get('connected') && me.get('stompClient')) {
me.get('stompClient').disconnect();
me.set('connected', false);
console.info('Websocket disconnected.');
}
else {
console.info('Websocket is not connected, ignore disconnect.');
}
},
disconnect: aliasMethod('willDestroy')
});