فهرست منبع

Add in proxy for /socket.io so that we don't need to faff with real-time service location

James Allen 11 سال پیش
والد
کامیت
0f69ee0f22

+ 12 - 0
services/web/app/coffee/Features/RealTimeProxy/RealTimeProxyRouter.coffee

@@ -0,0 +1,12 @@
+settings = require "settings-sharelatex"
+
+httpProxy = require('http-proxy');
+proxy = httpProxy.createProxyServer({
+	target: settings.apis.realTime.url
+	ws: true
+})
+
+module.exports =
+	apply: (app) ->
+		app.all /\/socket\.io\/.*/, (req, res, next) ->
+			proxy.web req, res, next

+ 2 - 0
services/web/app/coffee/router.coffee

@@ -34,6 +34,7 @@ BlogController = require("./Features/Blog/BlogController")
 WikiController = require("./Features/Wiki/WikiController")
 Modules = require "./infrastructure/Modules"
 RateLimiterMiddlewear = require('./Features/Security/RateLimiterMiddlewear')
+RealTimeProxyRouter = require('./Features/RealTimeProxy/RealTimeProxyRouter')
 
 logger = require("logger-sharelatex")
 _ = require("underscore")
@@ -62,6 +63,7 @@ module.exports = class Router
 		UploadsRouter.apply(app)
 		PasswordResetRouter.apply(app)
 		StaticPagesRouter.apply(app)
+		RealTimeProxyRouter.apply(app)
 		
 		Modules.applyRouter(app)
 

+ 2 - 0
services/web/config/settings.defaults.coffee

@@ -100,6 +100,8 @@ module.exports =
 			subdomain: ""
 		geoIpLookup:
 			url: "http://localhost:8080/json"
+		realTime:
+			url: "http://localhost:3026"
 			
 	templates:
 		user_id: process.env.TEMPLATES_USER_ID or "5395eb7aad1f29a88756c7f2"

+ 1 - 0
services/web/package.json

@@ -18,6 +18,7 @@
     "dateformat": "1.0.4-1.2.3",
     "express": "3.3.4",
     "fairy": "0.0.2",
+    "http-proxy": "^1.8.1",
     "jade": "~1.3.1",
     "ldapjs": "^0.7.1",
     "logger-sharelatex": "git+https://github.com/sharelatex/logger-sharelatex.git#v1.0.0",