You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
2.4 KiB
2.4 KiB
Vue-Socket.io
socket.io implemantation for Vuejs 2 and Vuex
Install
npm install vue-socket.io --save
Usage
Configration
Automaticly socket connect from url string
Vue.use(VueSocketio, 'http://socketserver.com:1923');
Bind custom socket.io-client instance
Vue.use(VueSocketio, socketio('http://socketserver.com:1923'));
Enable Vuex integration
import store from './yourstore'
Vue.use(VueSocketio, socketio('http://socketserver.com:1923'), store);
On Vuejs instance usage
var vm = new Vue({
sockets:{
connect: function(){
console.log('socket connected')
},
customEmit: function(val){
console.log('this method fired by socket server. eg: io.emit("customEmit", data)')
}
},
methods: {
clickButton: function(val){
// $socket is socket.io-client instance
this.$socket.emit('emit_method', val);
}
}
})
Dynamic socket event listenlers
Create new listenler
this.$options.sockets.event_name = (data) => {
console.log(data)
}
Remove exist listenler
delete this.$options.sockets.event_name;
Vuex Store integration
Example store, socket mutations always have "SOCKET_" prefix
import Vue from 'vue'
import Vuex from 'vuex'
Vue.use(Vuex);
export default new Vuex.Store({
state: {
connect: false,
message: null
},
mutations:{
SOCKET_CONNECT: (state, status ) => {
state.connect = true;
},
SOCKET_USER_MESSAGE: (state, message) => {
state.message = message;
}
},
actions: {
otherAction: ({ commit, dispatch, state }, type) => {
return true;
}
}
})