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.
Vue-Socket.io/README.md

2.4 KiB

Vue-Socket.io

NPM version VueJS v2 compatible Downloads Dependency Badge License

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;
        }
    }
})

Example

Realtime Car Tracker System

Simple Chat App