פרוקסי ל WebSocket ב NodeJS
-
יש לי שרת סטטי שמביא לי קבצים כגון JS וכו,
ויש לי שרת API שמיועד לקריאות AJAX.
כל אחד יושב כמובן על פורט אחר.
אני רוצה שהקריאה לשרת ה AJAX תתבצע דרך השרת הסטטי, בשביל שלא אצטרך להסתבך עם CROSS ORIGIN ועם תעודות אבטחה וכו.
מה שעשיתי, כל קריאות הAJAX מתחילות ב /API
בשרת הסטטי הוספתי middleware שמעביר את כל הקריאות הללו לשרת הAPI.
הכל עובד טוב ויפה
(השתמשתי ב
ExpressJS
express-http-proxy)
הבעיה היא בסוקטים.(WebSocket)
השרת API מחזיק גם שרת ווב-סוקט (באותו פורט).
הבעיה היא שאני לא מצליח להפנות את הפניות של הוובסוקט לשרת API.קליינט ווב סוקט- Socket.IO
קטע קוד ממה שעשיתי:
const express = require('express') const path = require('path'); const app = express(); const proxy = require('express-http-proxy'); const apiProxy = proxy('localhost:API_PORT/api', { proxyReqPathResolver: function (req) { return req.originalUrl; } }); app.use('/api/*', apiProxy);
הבעיה היא כנראה בגלל שהווב סוקט מגיע בפרוטוקול WS. לכן הוא לא "נתפס" ע"י הMiddleWare של Epxress.
מישהו מכיר פתרון?
או לחילופין, פתרון שונה לעניין של עדיפותי לפצל את שרת ה API מהשרת הסטטי.