50 lines
1.1 KiB
JavaScript
50 lines
1.1 KiB
JavaScript
"use strict";
|
|
|
|
import Echo from 'laravel-echo';
|
|
import Pusher from 'pusher-js';
|
|
|
|
class websocket {
|
|
_echo = null;
|
|
pusher = Pusher;
|
|
|
|
callbacks = []
|
|
|
|
constructor() {
|
|
let _this = this;
|
|
axios.get('/websockets/settings')
|
|
.then(response => {
|
|
_this._echo = new Echo({
|
|
broadcaster: 'reverb',
|
|
key: response.data.key,
|
|
wsHost: response.data.wsHost,
|
|
wsPort: response.data.wsPort,
|
|
wssPort: response.data.wssPort,
|
|
forceTLS: response.data.forceTLS,
|
|
enabledTransports: ['ws', 'wss'],
|
|
});
|
|
_this.startCallbacks();
|
|
})
|
|
.catch(error => {
|
|
|
|
});
|
|
}
|
|
|
|
add(callback) {
|
|
if (this._echo !== null) {
|
|
callback(this._echo)
|
|
return ;
|
|
}
|
|
|
|
this.callbacks.push(callback);
|
|
}
|
|
|
|
startCallbacks() {
|
|
let _this = this;
|
|
this.callbacks.forEach(function(callback) {
|
|
callback(_this._echo)
|
|
});
|
|
}
|
|
}
|
|
|
|
window.websocket = new websocket();
|