43 lines
1.3 KiB
JavaScript
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')
|
|
});
|
|
|