EditorRealTimeController.coffee 699 B

1234567891011121314151617181920212223
  1. Settings = require 'settings-sharelatex'
  2. RedisWrapper = require("../../infrastructure/RedisWrapper")
  3. rclient = RedisWrapper.client("realtime")
  4. os = require "os"
  5. crypto = require "crypto"
  6. HOST = os.hostname()
  7. RND = crypto.randomBytes(4).toString('hex') # generate a random key for this process
  8. COUNT = 0
  9. module.exports = EditorRealTimeController =
  10. emitToRoom: (room_id, message, payload...) ->
  11. # create a unique message id using a counter
  12. message_id = "web:#{HOST}:#{RND}-#{COUNT++}"
  13. rclient.publish "editor-events", JSON.stringify
  14. room_id: room_id
  15. message: message
  16. payload: payload
  17. _id: message_id
  18. emitToAll: (message, payload...) ->
  19. @emitToRoom "all", message, payload...