mirror of
https://github.com/MetinSeylan/Vue-Socket.io.git
synced 2025-04-16 15:21:28 +02:00
52 lines
1.4 KiB
JavaScript
Executable file
52 lines
1.4 KiB
JavaScript
Executable file
import Observer from './Observer'
|
|
import Emitter from './Emitter'
|
|
|
|
export default {
|
|
|
|
install(Vue, connection, store){
|
|
|
|
if(!connection) throw new Error("[Vue-Socket.io] cannot locate connection")
|
|
|
|
let observer = new Observer(connection, store)
|
|
|
|
Vue.prototype.$socket = observer.Socket;
|
|
|
|
Vue.mixin({
|
|
beforeCreate(){
|
|
let sockets = this.$options['sockets']
|
|
|
|
this.$options.sockets = new Proxy({}, {
|
|
set: (target, key, value) => {
|
|
Emitter.addListener(key, value, this)
|
|
target[key] = value
|
|
return true;
|
|
},
|
|
deleteProperty: (target, key) => {
|
|
Emitter.removeListener(key, this.$options.sockets[key], this)
|
|
delete target.key;
|
|
return true
|
|
}
|
|
})
|
|
|
|
if(sockets){
|
|
Object.keys(sockets).forEach((key) => {
|
|
this.$options.sockets[key] = sockets[key];
|
|
});
|
|
}
|
|
},
|
|
beforeDestroy(){
|
|
let sockets = this.$options['sockets']
|
|
|
|
if(sockets){
|
|
Object.keys(sockets).forEach((key) => {
|
|
delete this.$options.sockets[key]
|
|
});
|
|
}
|
|
}
|
|
})
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|