You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
88 lines
2.6 KiB
JavaScript
88 lines
2.6 KiB
JavaScript
export default {
|
|
|
|
/**
|
|
* Assign runtime callbacks
|
|
*/
|
|
beforeCreate(){
|
|
|
|
if(!this.sockets) this.sockets = {};
|
|
|
|
if (typeof this.$vueSocketIo === 'object') {
|
|
for (const namespace of Object.keys(this.$vueSocketIo)) {
|
|
this.sockets[namespace] = {
|
|
subscribe: (event, callback) => {
|
|
this.$vueSocketIo[namespace].emitter.addListener(event, callback, this);
|
|
},
|
|
unsubscribe: (event) => {
|
|
this.$vueSocketIo[namespace].emitter.removeListener(event, this);
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
this.$vueSocketIo.emitter.addListener(event, callback, this);
|
|
this.$vueSocketIo.emitter.removeListener(event, this);
|
|
}
|
|
},
|
|
|
|
/**
|
|
* Register all socket events
|
|
*/
|
|
mounted(){
|
|
|
|
if(this.$options.sockets){
|
|
|
|
if (typeof this.$vueSocketIo === 'object') {
|
|
for (const namespace of Object.keys(this.$vueSocketIo)) {
|
|
if (this.$options.sockets[namespace]) {
|
|
Object.keys(this.$options.sockets[namespace]).forEach(event => {
|
|
|
|
if(event !== 'subscribe' && event !== 'unsubscribe') {
|
|
this.$vueSocketIo[namespace].emitter.addListener(event, this.$options.sockets[namespace][event], this);
|
|
}
|
|
|
|
});
|
|
}
|
|
}
|
|
} else {
|
|
Object.keys(this.$options.sockets).forEach(event => {
|
|
|
|
if(event !== 'subscribe' && event !== 'unsubscribe') {
|
|
this.$vueSocketIo.emitter.addListener(event, this.$options.sockets[event], this);
|
|
}
|
|
|
|
});
|
|
}
|
|
}
|
|
|
|
},
|
|
|
|
/**
|
|
* unsubscribe when component unmounting
|
|
*/
|
|
beforeDestroy(){
|
|
|
|
if(this.$options.sockets){
|
|
|
|
if (typeof this.$vueSocketIo === 'object') {
|
|
for (const namespace of Object.keys(this.$vueSocketIo)) {
|
|
if (this.$options.sockets[namespace]) {
|
|
Object.keys(this.$options.sockets[namespace]).forEach(event => {
|
|
|
|
this.$vueSocketIo[namespace].emitter.removeListener(event, this);
|
|
|
|
});
|
|
}
|
|
}
|
|
} else {
|
|
Object.keys(this.$options.sockets).forEach(event => {
|
|
|
|
this.$vueSocketIo.emitter.removeListener(event, this);
|
|
|
|
});
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
} |