Relay messages received via HTTP into the project

This commit is contained in:
James Allen 2015-03-03 17:15:19 +00:00
parent 5ee71a423d
commit 536118b0cf
5 changed files with 25 additions and 0 deletions

View 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

View file

@ -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?

View file

@ -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

View file

@ -9,6 +9,8 @@ module.exports =
realTime:
port: 3026
host: "localhost"
user: "sharelatex"
pass: "password"
apis:
web:

View file

@ -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",