because shithub doesnt have ipv6 support
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.
 
Go to file
Michgeek 8709b16a78 Add support to native events
Native event was passed capitalized which cause unexpected camelCase
conversion.

Event is now passed without uppercasing and save string transformations

e.g.
SOCKET_CONNECT       => `socket_cONNECT`      instead of `socket_connect`
SOCKET_CONNECT_ERROR => `socket_cONNECTERROR` instead of `socket_connectError`
7 years ago
dist Add support to native events 7 years ago
src Add support to native events 7 years ago
.gitignore v2 8 years ago
README.md Add support for namespaced Vuex actions 7 years ago
package.json 2.1.0 8 years ago
webpack.config.js 2.1.0 8 years ago

README.md

Vue-Socket.io

NPM version VueJS v2 compatible Downloads Dependency Badge License

socket.io implementation for Vuejs 2 and Vuex

Install

npm install vue-socket.io --save

Usage

Configuration

Automatic socket connection from an URL string

import VueSocketio from 'vue-socket.io';
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 was fired by the 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 listeners

Create a new listener

this.$options.sockets.event_name = (data) => {
    console.log(data)
}

Remove existing listener

delete this.$options.sockets.event_name;

Vuex Store integration

Socket mutations always have SOCKET_ prefix.

Socket actions always have socket_ prefix and the socket event name is camelCased (ex. SOCKET_USER_MESSAGE => socket_userMessage)

You can use either one or another or both in your store. Namespaced modules are supported.

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: (context, type) => {
            return true;
        },
        socket_userMessage: (context, message) => {
            context.dispatch('newMessage', message);
            context.commit('NEW_MESSAGE_RECEIVED', message);
            if (message.is_important) {
                context.dispatch('alertImportantMessage', message);
            }
            ...
        }
    }
})

Example

Realtime Car Tracker System

Simple Chat App