io.js 1.3 KB

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