EditorRealTimeController.coffee 941 B

123456789101112131415161718192021222324252627282930
  1. Settings = require 'settings-sharelatex'
  2. redis = require("redis-sharelatex")
  3. rclientPub = redis.createClient(Settings.redis.web)
  4. rclientSub = redis.createClient(Settings.redis.web)
  5. module.exports = EditorRealTimeController =
  6. rclientPub: rclientPub
  7. rclientSub: rclientSub
  8. emitToRoom: (room_id, message, payload...) ->
  9. @rclientPub.publish "editor-events", JSON.stringify
  10. room_id: room_id
  11. message: message
  12. payload: payload
  13. emitToAll: (message, payload...) ->
  14. @emitToRoom "all", message, payload...
  15. listenForEditorEvents: () ->
  16. @rclientSub.subscribe "editor-events"
  17. @rclientSub.on "message", @_processEditorEvent.bind(@)
  18. _processEditorEvent: (channel, message) ->
  19. io = require('../../infrastructure/Server').io
  20. message = JSON.parse(message)
  21. if message.room_id == "all"
  22. io.sockets.emit(message.message, message.payload...)
  23. else
  24. io.sockets.in(message.room_id).emit(message.message, message.payload...)