/* (1) Imports ---------------------------------------------------------*/ /* (1) NPM libs */ import Vue from 'vue' /* (2) Internal libs */ import {API} from './lib/api-es6' import {WSClient,WSClientBuilder} from './lib/ws-client-es6' /* (3) Vues */ import wrapper_vue from './vue/wrapper.vue' /* (2) Initialisation ---------------------------------------------------------*/ /* (1) API */ window.api = new API("http://ndli1718/api/v/1.0/"); /* (2) wsclient */ window.wsc = new WSClientBuilder("wss://websocket.xdrm.io"); /* (3) global store init */ require('./vue-config'); window.gstore.add('server', window._SERVER); /* (4) Render view */ new Vue({ el: '#main-vue', render: h => h(wrapper_vue), data: { gstore: window.gstore.data } }) /* (3) Set WebSocket channels ---------------------------------------------------------*/ /* (1) Connection channel */ window.wsc_connect = window.wsc.channel('connect').listen(function(msg, err){ // {1} Manage error // if( msg == null && err != null ){ window.gstore.data.info.message = 'Erreur de connexion WebSocket@connect ('+err+')'; window.gstore.data.info.type = 'warning'; window.gstore.data.info.active = true; setTimeout(function(){ window.gstore.data.info.active=false; }, 5000); /*TEMP*/return; /*TEMP*///msg = {error: 0, connected: ['guest123', 'guest456', 'guest789']}; } // {2} Manage wsclient error // if( msg.connected == null || msg.error == null || msg.error !== 0 ){ console.warn('websocket error: '+msg.error); if( msg.error == null ) window.gstore.data.info.message = 'Erreur de connexion WebSocket@connect (Unknown Error)'; else window.gstore.data.info.message = 'Erreur de connexion WebSocket@connect ('+msg.error+')'; window.gstore.data.info.type = 'warning'; window.gstore.data.info.active = true; setTimeout(function(){ window.gstore.data.info.active=false; }, 5000); return; } // {3} Manage notification // console.log('Detected '+msg.connected.length+' new user(s)'); window.gstore.data.notif[0].data = window.gstore.data.notif[0].data.concat( msg.connected ); }).send({name: window._SERVER.session.name}); /* (2) Message channel */ window.wsc_chat = window.wsc.channel('chat').listen(function(msg, err){ // {1} Manage error // if( msg == null && err != null ){ window.gstore.data.info.message = 'Erreur de connexion WebSocket@connect ('+err+')'; window.gstore.data.info.type = 'warning'; window.gstore.data.info.active = true; setTimeout(function(){ window.gstore.data.info.active=false; }, 5000); /*TEMP*/return; /*TEMP*///msg = {error: 0, msg: [['guest123', 'message 1'], ['guest456', 'message 2'], ['guest789', 'message 3']]}; } // {2} Manage wsclient error // if( msg.msg == null || msg.error == null || msg.error !== 0 ){ console.warn('websocket error: '+msg.error); if( msg.error == null ) window.gstore.data.info.message = 'Erreur de connexion WebSocket@connect (Unknown Error)'; else window.gstore.data.info.message = 'Erreur de connexion WebSocket@connect ('+msg.error+')'; window.gstore.data.info.type = 'warning'; window.gstore.data.info.active = true; setTimeout(function(){ window.gstore.data.info.active=false; }, 5000); return; } // {3} Manage notification // console.log('Received '+msg.msg.length+' new message(s)'); window.gstore.data.notif[1].data = window.gstore.data.notif[1].data.concat( msg.msg ); }).send({name: window._SERVER.session.name});