דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. פרוקסי ל WebSocket ב NodeJS

פרוקסי ל WebSocket ב NodeJS

מתוזמן נעוץ נעול הועבר תכנות
3 פוסטים 2 כותבים 84 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • מנצפךמ מנותק
    מנצפךמ מנותק
    מנצפך
    כתב ב נערך לאחרונה על ידי מנצפך
    #1

    יש לי שרת סטטי שמביא לי קבצים כגון 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 מהשרת הסטטי.

    תגובה 1 תגובה אחרונה
    0
    • מנצפךמ מנותק
      מנצפךמ מנותק
      מנצפך
      כתב ב נערך לאחרונה על ידי
      #2

      הפתרון הוא להשתמש ב

      const enableWs = require('express-ws')
      enableWs(app);
      

      ואז יש תמיכה ב WS.

      הבעיה שלי היא שהקליינט (SocketIO) מתנהג עדיין בצורה מוזרה.
      חלק מקריאות ה Http שלו (לא ה WS), נופלות ללא תשובה.

      תגובה 1 תגובה אחרונה
      0
      • dovidD מחובר
        dovidD מחובר
        dovid ניהול
        כתב ב נערך לאחרונה על ידי
        #3

        תשתמש בnginx ותרויח גם פתרון קל וגם ביצועים טובים יותר.

        מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

        בכל נושא אפשר ליצור קשר dovid@tchumim.com

        תגובה 1 תגובה אחרונה
        0

        בא תתחבר לדף היומי!
        • התחברות

        • אין לך חשבון עדיין? הרשמה

        • התחברו או הירשמו כדי לחפש.
        • פוסט ראשון
          פוסט אחרון
        0
        • דף הבית
        • קטגוריות
        • פוסטים אחרונים
        • משתמשים
        • חיפוש
        • חוקי הפורום