summaryrefslogtreecommitdiffstats
path: root/webapp/src/main.js
diff options
context:
space:
mode:
authorUdo Walter2018-11-26 20:12:31 +0100
committerUdo Walter2018-11-26 20:12:31 +0100
commit82648439b945cc5d049886f7e79c2f0dd9d14ff9 (patch)
treeebeb33ba47bef73306d004b230726ddad5d16bfa /webapp/src/main.js
parent[webapp] small bugfix (diff)
downloadbas-82648439b945cc5d049886f7e79c2f0dd9d14ff9.tar.gz
bas-82648439b945cc5d049886f7e79c2f0dd9d14ff9.tar.xz
bas-82648439b945cc5d049886f7e79c2f0dd9d14ff9.zip
[webapp+server] Add first implementation of a websocket to alert webclients of events
and to synchronize notification across multiple webapp instances of the same user
Diffstat (limited to 'webapp/src/main.js')
-rw-r--r--webapp/src/main.js25
1 files changed, 24 insertions, 1 deletions
diff --git a/webapp/src/main.js b/webapp/src/main.js
index 3f59ede..8637c96 100644
--- a/webapp/src/main.js
+++ b/webapp/src/main.js
@@ -10,6 +10,7 @@ import Vuex from 'vuex'
import globalStore from '@/store/global'
import storeModules from '@/config/store'
import axios from 'axios'
+import io from 'socket.io-client'
import { router, registerRouterGuards } from '@/router'
import VueI18n from 'vue-i18n'
import i18nMessages from '@/config/i18n'
@@ -60,8 +61,30 @@ axios.interceptors.response.use(null, error => {
return Promise.reject(error)
})
+const socket = io({
+ autoConnect: false
+});
+
+socket.on('error', function(err) {
+ console.log('Socket.io error: ' + err);
+ if (err === 'TOKEN_MISSING' || err === 'TOKEN_INVALID') {
+ socket.close()
+ console.log('Closing socket.');
+ }
+});
+
+socket.on('hello', data => {
+ console.log(data)
+})
+
+socket.open()
+
Vue.prototype.$http = axios
-Vue.prototype.$alert = function (data) {
+Vue.prototype.$socket = socket
+
+Vue.prototype.$alert = function (data, emit = true) {
+ if (!data.id) data.id = '_' + Math.random().toString(36).substr(2, 9)
+ if (emit) socket.emit('notifications newAlert', data)
store.commit('notifications/newAlert', data)
}
Vue.prototype.$snackbar = function (data) {