mirror of
https://github.com/overleaf/overleaf.git
synced 2025-04-20 19:16:00 +00:00
Relay messages received via HTTP into the project
This commit is contained in:
parent
5ee71a423d
commit
536118b0cf
5 changed files with 25 additions and 0 deletions
8
services/real-time/app/coffee/HttpApiController.coffee
Normal file
8
services/real-time/app/coffee/HttpApiController.coffee
Normal file
|
@ -0,0 +1,8 @@
|
|||
WebsocketLoadBalancer = require "./WebsocketLoadBalancer"
|
||||
logger = require "logger-sharelatex"
|
||||
|
||||
module.exports = HttpApiController =
|
||||
sendMessage: (req, res, next) ->
|
||||
logger.log {message: req.params.message}, "sending message"
|
||||
WebsocketLoadBalancer.emitToRoom req.params.project_id, req.params.message, req.body
|
||||
res.send 204 # No content
|
|
@ -1,8 +1,18 @@
|
|||
metrics = require "metrics-sharelatex"
|
||||
logger = require "logger-sharelatex"
|
||||
settings = require "settings-sharelatex"
|
||||
WebsocketController = require "./WebsocketController"
|
||||
HttpController = require "./HttpController"
|
||||
HttpApiController = require "./HttpApiController"
|
||||
Utils = require "./Utils"
|
||||
bodyParser = require "body-parser"
|
||||
|
||||
basicAuth = require('basic-auth-connect')
|
||||
httpAuth = basicAuth (user, pass)->
|
||||
isValid = user == settings.internal.realTime.user and pass == settings.internal.realTime.pass
|
||||
if !isValid
|
||||
logger.err user:user, pass:pass, "invalid login details"
|
||||
return isValid
|
||||
|
||||
module.exports = Router =
|
||||
_handleError: (callback = ((error) ->), error, client, method, extraAttrs = {}) ->
|
||||
|
@ -19,6 +29,8 @@ module.exports = Router =
|
|||
app.set("io", io)
|
||||
app.get "/clients", HttpController.getConnectedClients
|
||||
app.get "/clients/:client_id", HttpController.getConnectedClient
|
||||
|
||||
app.post "/project/:project_id/message/:message", httpAuth, bodyParser.json(limit: "5mb"), HttpApiController.sendMessage
|
||||
|
||||
session.on 'connection', (error, client, session) ->
|
||||
if error?
|
||||
|
|
|
@ -12,6 +12,7 @@ module.exports = WebsocketLoadBalancer =
|
|||
if !room_id?
|
||||
logger.warn {message, payload}, "no room_id provided, ignoring emitToRoom"
|
||||
return
|
||||
logger.log {room_id, message, payload}, "emitting to room"
|
||||
@rclientPub.publish "editor-events", JSON.stringify
|
||||
room_id: room_id
|
||||
message: message
|
||||
|
|
|
@ -9,6 +9,8 @@ module.exports =
|
|||
realTime:
|
||||
port: 3026
|
||||
host: "localhost"
|
||||
user: "sharelatex"
|
||||
pass: "password"
|
||||
|
||||
apis:
|
||||
web:
|
||||
|
|
|
@ -9,6 +9,8 @@
|
|||
},
|
||||
"dependencies": {
|
||||
"async": "^0.9.0",
|
||||
"basic-auth-connect": "^1.0.0",
|
||||
"body-parser": "^1.12.0",
|
||||
"connect-redis": "^2.1.0",
|
||||
"cookie-parser": "^1.3.3",
|
||||
"express": "^4.10.1",
|
||||
|
|
Loading…
Add table
Reference in a new issue