SocketIoContainer.js 985 B

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950
  1. import { Container } from 'unstated';
  2. import io from 'socket.io-client';
  3. import loggerFactory from '~/utils/logger';
  4. const logger = loggerFactory('growi:cli:SocketIoContainer');
  5. /**
  6. * Service container related to options for WebSocket
  7. * @extends {Container} unstated Container
  8. */
  9. export default class SocketIoContainer extends Container {
  10. constructor(appContainer, namespace) {
  11. super();
  12. this.appContainer = appContainer;
  13. this.appContainer.registerContainer(this);
  14. const ns = namespace || '/';
  15. this.socket = io(ns, {
  16. transports: ['websocket'],
  17. });
  18. this.socket.on('connect_error', (error) => {
  19. logger.error(error);
  20. });
  21. this.socket.on('error', (error) => {
  22. logger.error(error);
  23. });
  24. this.state = {
  25. };
  26. }
  27. /**
  28. * Workaround for the mangling in production build to break constructor.name
  29. */
  30. static getClassName() {
  31. return 'SocketIoContainer';
  32. }
  33. getSocket() {
  34. return this.socket;
  35. }
  36. }