websockets.js 894 B

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. /* eslint no-param-reassign: 0 */
  2. const state = {
  3. socket: {
  4. dispatcher: {}
  5. }
  6. };
  7. const getters = {
  8. getSocket: state => state.socket
  9. };
  10. const actions = {
  11. createSocket: ({ commit }, socket) => commit("createSocket", socket)
  12. };
  13. const mutations = {
  14. createSocket(state, socket) {
  15. const { listeners } = state.socket.dispatcher;
  16. state.socket = socket;
  17. // only executes if the websocket object is being replaced
  18. if (listeners) {
  19. // for each listener type
  20. Object.keys(listeners).forEach(listenerType =>
  21. // for each callback previously present for the listener type
  22. listeners[listenerType].forEach(element => {
  23. // add the listener back after the websocket object is reset
  24. state.socket.dispatcher.addEventListener(
  25. listenerType,
  26. element.cb
  27. );
  28. })
  29. );
  30. }
  31. }
  32. };
  33. export default {
  34. namespaced: true,
  35. state,
  36. getters,
  37. actions,
  38. mutations
  39. };