| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- /* eslint-disable
- camelcase,
- max-len,
- no-unused-vars,
- */
- // TODO: This file was created by bulk-decaffeinate.
- // Fix any style issues and re-enable lint.
- /*
- * decaffeinate suggestions:
- * DS101: Remove unnecessary use of Array.from
- * DS102: Remove unnecessary code created because of implicit returns
- * Full docs: https://github.com/decaffeinate/decaffeinate/blob/master/docs/suggestions.md
- */
- let EditorRealTimeController
- const Settings = require('settings-sharelatex')
- const Metrics = require('metrics-sharelatex')
- const RedisWrapper = require('../../infrastructure/RedisWrapper')
- const rclient = RedisWrapper.client('pubsub')
- const os = require('os')
- const crypto = require('crypto')
- const HOST = os.hostname()
- const RND = crypto.randomBytes(4).toString('hex') // generate a random key for this process
- let COUNT = 0
- module.exports = EditorRealTimeController = {
- emitToRoom(room_id, message, ...payload) {
- // create a unique message id using a counter
- const message_id = `web:${HOST}:${RND}-${COUNT++}`
- var channel
- if (room_id === 'all' || !Settings.publishOnIndividualChannels) {
- channel = 'editor-events'
- } else {
- channel = `editor-events:${room_id}`
- }
- const blob = JSON.stringify({
- room_id,
- message,
- payload,
- _id: message_id
- })
- Metrics.summary('redis.publish.editor-events', blob.length)
- return rclient.publish(channel, blob)
- },
- emitToAll(message, ...payload) {
- return this.emitToRoom('all', message, ...Array.from(payload))
- }
- }
|