;(function () { var Socketio = typeof require === "function" ? require("socket.io-client") : window.io; if (!Socketio) { throw new Error("[Vue-Socket.io] cannot locate Socket.io") } var VueSocketio = { install: function (Vue, connection) { if (!connection) { throw new Error("[Vue-Socket.io] cannot locate connection") } if (typeof connection === 'string') { var socket = Socketio(connection); } else if (typeof connection === 'object') { var socket = connection; } /* * Wildcard support * http://stackoverflow.com/questions/10405070/socket-io-client-respond-to-all-events-with-one-handler */ var onevent = socket.onevent; socket.onevent = function (packet) { var args = packet.data || []; onevent.call(this, packet); packet.data = ["*"].concat(args); onevent.call(this, packet); }; var methods = [ "connect", "error", "disconnect", "reconnect", "reconnect_attempt", "reconnecting", "reconnect_error", "reconnect_failed" ]; Vue.mixin({ created: function () { var self = this; if (this.$options.hasOwnProperty("sockets")) { socket.on("*", function (emit, data) { if (self.$options.sockets.hasOwnProperty(emit)) { self.$options.sockets[emit].call(self, data); } }); methods.forEach(function (m) { socket.on(m, function (data) { if (self.$options.sockets.hasOwnProperty(m)) { self.$options.sockets[m].call(self, data); } }); }); } // Global socketio instance this.$socket = socket; } }); } }; if (typeof exports == "object") { module.exports = VueSocketio } else if (typeof define == "function" && define.amd) { define([], function () { return VueSocketio }) } else if (window.Vue) { window.VueSocketio = VueSocketio; } })();