io.js 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
  1. let callbacks = [];
  2. let onConnectCallbacks = [];
  3. let onDisconnectCallbacks = [];
  4. export default {
  5. ready: false,
  6. socket: null,
  7. getSocket: function (cb) {
  8. if (this.ready) cb(this.socket);
  9. else callbacks.push(cb);
  10. },
  11. onConnect: function(cb) {
  12. onConnectCallbacks.push(cb);
  13. },
  14. onDisconnect: function(cb) {
  15. onDisconnectCallbacks.push(cb);
  16. },
  17. removeAllListeners: function() {
  18. Object.keys(this.socket._callbacks).forEach((id) => {
  19. if (id.indexOf("$event:song") !== -1) {
  20. delete this.socket._callbacks[id];
  21. }
  22. });
  23. },
  24. init: function (url) {
  25. this.socket = window.socket = io(url);
  26. this.socket.on('connect', () => {
  27. // Connect
  28. console.log("SOCKET.IO CONNECTED");
  29. onConnectCallbacks.forEach((cb) => {
  30. cb();
  31. });
  32. });
  33. this.socket.on('disconnect', () => {
  34. // Disconnect
  35. console.log("SOCKET.IO DISCONNECTED");
  36. onDisconnectCallbacks.forEach((cb) => {
  37. cb();
  38. });
  39. });
  40. this.socket.on('connect_error', () => {
  41. // Connect error
  42. console.log("SOCKET.IO ERROR WHILE CONNECTING");
  43. });
  44. this.ready = true;
  45. callbacks.forEach(callback => {
  46. callback(this.socket);
  47. });
  48. callbacks = [];
  49. }
  50. }