mirror of
https://github.com/tenrok/vue-native-websocket.git
synced 2026-05-23 22:34:05 +03:00
49 lines
1.2 KiB
JavaScript
Executable File
49 lines
1.2 KiB
JavaScript
Executable File
import Observer from './Observer'
|
|
import Emitter from './Emitter'
|
|
|
|
export default {
|
|
|
|
install (Vue, connection, opts = {}) {
|
|
if (!connection) { throw new Error('[vue-native-socket] cannot locate connection') }
|
|
|
|
let observer = new Observer(connection, opts)
|
|
|
|
Vue.prototype.$socket = observer.WebSocket
|
|
|
|
Vue.mixin({
|
|
created () {
|
|
let vm = this
|
|
let sockets = this.$options['sockets']
|
|
|
|
this.$options.sockets = new Proxy({}, {
|
|
set (target, key, value) {
|
|
Emitter.addListener(key, value, vm)
|
|
target[key] = value
|
|
return true
|
|
},
|
|
deleteProperty (target, key) {
|
|
Emitter.removeListener(key, vm.$options.sockets[key], vm)
|
|
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]
|
|
})
|
|
}
|
|
}
|
|
})
|
|
}
|
|
}
|