Vue-Socket.io/src/listenler.js
Metin Seylan 6de5990456 added vuex support
added actions & mutations prefix
updated gitignore & added npmignore file
2018-10-28 18:56:16 +03:00

51 lines
1.1 KiB
JavaScript

export default class VueSocketIOListenler {
/**
* socket.io-client reserved event keywords
* @type {string[]}
*/
static staticEvents = [
'connect',
'error',
'disconnect',
'reconnect',
'reconnect_attempt',
'reconnecting',
'reconnect_error',
'reconnect_failed',
'connect_error',
'connect_timeout',
'connecting',
'ping',
'pong'
];
constructor(io, emitter){
this.io = io;
this.register();
this.emitter = emitter;
}
/**
* Listening all socket.io events
*/
register(){
this.io.onevent = (packet) => {
let [event, ...args] = packet.data;
if(args.length === 1) args = args[0];
this.onEvent(event, args)
};
VueSocketIOListenler.staticEvents.forEach(event => this.io.on(event, () => this.onEvent(event)))
}
/**
* Broadcast all events to vuejs environment
*/
onEvent(event, args){
this.emitter.emit(event, args);
}
}