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

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

שאלה כללית ב WebSocket

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

    ידוע מהו מחזור הבקשות ב HTTP. בקליינט שולח בקשה ומאזין לתשובה לשאלה הספציפית.
    גם ב WebSocket הקליינט יכול לעשות אותו דבר.
    השאלה שלי היא האם גם השרת יכול לעשות את זה? לשלוח בקשה מסוימת לקליינט ולהאזין לאותה בקשה?
    אם-כן, מישהו יכול להנחות אותי איך לעשות או איך לחפש עזרה על מימוש כזה ב Sails.js
    תודה.

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

    בשביל שהשרת יכול ליזום תקשורת יש להחזיק סוקט פתוח.
    כלומר הלקוח יוזם פתיחת תקשורת, ואז היא נשארת פתוחה. והלקוח מאזין לקבלת מידע מהשרת.
    כעת יש שתי נושאים למימוש, צד הלקוח וצד השרת.
    צד הלקוח זה API של HTML5, והוא פשוט יחסית, ראה פה: https://www.html5rocks.com/en/tutorials/websockets/basics/

    צד השרת בnodejs תתקין חבילה, כמו ws, ואז אתה מקים שרת ממש בקלות:

    const wss = new WebSocket.Server({ port: 8080 });
    
    wss.on('connection', function connection(ws) {
      ws.on('message', function incoming(message) {
        console.log('received: %s', message);
      });
    
      ws.send('something');
    });
    

    כדי ליזום שליחת מידע ללקוחות המחוברים עליך לשמור אותם ברשימה, הנה דוגמא:

    const wss = new WebSocket.Server({ port: 8080 });
    var clients = [];
    
    wss.on('connection', c => clients.push(_ws)
    ).on('close', c => clients.splice(clients.indexOf(c), 1));
    
    function sendMessageToClient(msg){
      clients.forEach(x => x.send(msg));
    }
    

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

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

    @dovid תודה רבה.
    אני רוצה להתמקד בעניין של שאילתת get או post מצד שרת ללקוח. שהשרת ידע לחכות לתשובה ולהתייחס לנתונים בהתאם. אפשרי?

    dovidD תגובה 1 תגובה אחרונה
    0
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    השיב למנצפך ב נערך לאחרונה על ידי dovid
    #4

    @מנצפך אמר בשאלה כללית ב WebSocket:

    @dovid תודה רבה.
    אני רוצה להתמקד בעניין של שאילתת get או post מצד שרת ללקוח. שהשרת ידע לחכות לתשובה ולהתייחס לנתונים בהתאם. אפשרי?

    לא שייך get וpost אלא פשוט שליחה מהלקוח וקבלה בשרת ולהיפך.

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

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

    @dovid אבל בצד לקוח יש. (מימשתי דבר כזה).

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

    אתה כנראה טעית כי יש סתירה במשפט: "מצד שרת ללקוח" משמע יוזמת שרת, ואילו "שהשרת ידע לחכות לתשובה ולהתייחס לנתונים בהתאם" משמע שרת פסיבי.

    אני מניח שאתה מתכוון שהלקוח יידע (כלומר JS שרץ בדפדפן), יש בזה דוגמא בלינק לדעיל:

    connection.onmessage = function (e) {
      console.log('Server: ' + e.data);
    };
    

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

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

    @dovid ממש לא.
    אני מתכוון כמו שהקליינט יכול לשלוח בקשת get ב http ולהמתין לתשובה, (זה בעצם מה שעושה הדפדפן), אותו דבר הקליינט יכול לעשות ב WS. ואני שואל אם אותו דבר השרת יכול לעשות. לשלוח לקליינט ולהמתן לתשובה.

    clickoneC תגובה 1 תגובה אחרונה
    0
  • clickoneC מנותק
    clickoneC מנותק
    clickone
    השיב למנצפך ב נערך לאחרונה על ידי clickone
    #8

    @מנצפך
    מה מונע ממך לשים אירוע כשמתקבלת תגובה ואז זה יהיה כאילו חזרה?
    כמובן שתצטרך לעשות מזהה הודעה כדי לדעת שהיא זו שחזרה
    מה שאתה מנסה לעשות הוא סינכרוני, כשווב סוקט הוא א-סינכרוני.....

    אין טסט כמו פרודקשן.

    המייל שלי urivpn@gmail.com

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

    @מנצפך בא תספר מה אתה רוצה.

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

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

    @clickone קלע לעצם העניין. אני רוצה לייתר את מזהה ההודעה.
    @dovid , אני רוצה לבקש מהקליינט שישלח לי איזשהו קובץ.

    dovidD תגובה 1 תגובה אחרונה
    0
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    השיב למנצפך ב נערך לאחרונה על ידי dovid
    #11

    @מנצפך אמר בשאלה כללית ב WebSocket:

    @clickone קלע לעצם העניין. אני רוצה לייתר את מזהה ההודעה.
    @dovid , אני רוצה לבקש מהקליינט שישלח לי איזשהו קובץ.

    נו אז מה חסר בדוגמאות שכתבתי לך.
    אתה עושה send של הודעה עם המילים please send me ובצד לקוח אתה שולח. אלא שצד הלקוח הוא לא יכול לשלוח קבצים איך שבא לו (הדפדפן לא נותן להיות מלך על מחשב הלקוח), חייבים אינטראקציה של המשתמש, כך שהציור לא שלם.

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

    מנצפךמ תגובה 1 תגובה אחרונה
    1
  • מנצפךמ מנותק
    מנצפךמ מנותק
    מנצפך
    השיב לdovid ב נערך לאחרונה על ידי מנצפך
    #12

    @dovid במקרה הזה יש אינטרקציה. אין בעיה מבחינת זה. קח את זה כתיאורטי.

    dovidD תגובה 1 תגובה אחרונה
    0
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    השיב למנצפך ב נערך לאחרונה על ידי
    #13

    @מנצפך אמר בשאלה כללית ב WebSocket:

    @dovid במקרה הזה יש אינטרקציה. אין בעיה מבחינת זה.

    אז איפה כן הבעיה...

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

    clickoneC תגובה 1 תגובה אחרונה
    0
  • clickoneC מנותק
    clickoneC מנותק
    clickone
    השיב לdovid ב נערך לאחרונה על ידי
    #14

    @dovid
    הרי יכול להיות 10 בקשות במקביל
    אז במקום לעשות טוקן לכל בקשה ולבדוק מה חזר, הוא רוצה לוותר ע"ז.
    לא נראה שיש דרך נורמלית לזה.
    אלא אם כן הוא יכתוב או ימצא מחלקה שמטפלת בזה באופן חד פעמי

    אין טסט כמו פרודקשן.

    המייל שלי urivpn@gmail.com

    dovidD תגובה 1 תגובה אחרונה
    1
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    השיב לclickone ב נערך לאחרונה על ידי
    #15

    @clickone אמר בשאלה כללית ב WebSocket:

    @dovid
    הרי יכול להיות 10 בקשות במקביל
    אז במקום לעשות טוקן לכל בקשה ולבדוק מה חזר, הוא רוצה לוותר ע"ז.
    לא נראה שיש דרך נורמלית לזה.
    אלא אם כן הוא יכתוב או ימצא מחלקה שמטפלת בזה באופן חד פעמי

    לא הבנתי. בכל מקרה כל ערוץ של לקוח זה אובייקט בזיכרון. והוא מבודד עם הפרטים הנדרשים. הוא לא צריך שום טוקנים ושום כלום.

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

    clickoneC תגובה 1 תגובה אחרונה
    2
  • clickoneC מנותק
    clickoneC מנותק
    clickone
    השיב לdovid ב נערך לאחרונה על ידי
    #16

    @dovid
    אבל אצל אותו לקוח יכול להיות 10 בקשות של קבצים

    אין טסט כמו פרודקשן.

    המייל שלי urivpn@gmail.com

    dovidD תגובה 1 תגובה אחרונה
    0
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    השיב לclickone ב נערך לאחרונה על ידי
    #17

    @clickone אמר בשאלה כללית ב WebSocket:

    @dovid
    אבל אצל אותו לקוח יכול להיות 10 בקשות של קבצים

    נו אז שהבקשה תהיה please send file number 3.
    תתארו סיפור שלם מהתחלה לסוף כי אני מרגיש שאנחנו לא על אותו גל.

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

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

    @dovid אני חושב שקיבלתי את המידע שרציתי מהפוסט הזה.
    שלמעשה לא ניתן לבצע (בצורה נורמלית) בקשת get משרת לקליינט. ואצטרך לממש את זה איכשהו.
    תודה.

    dovidD תגובה 1 תגובה אחרונה
    1
  • dovidD מנותק
    dovidD מנותק
    dovid ניהול
    השיב למנצפך ב נערך לאחרונה על ידי
    #19

    @מנצפך אמר בשאלה כללית ב WebSocket:

    @dovid אני חושב שקיבלתי את המידע שרציתי מהפוסט הזה.
    שלמעשה לא ניתן לבצע (בצורה נורמלית) בקשת get משרת לקליינט. ואצטרך לממש את זה איכשהו.
    תודה.

    תרגיש בנח להבין מה שרצית אבל דבריך חסרי פשר בעיני.

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

    תגובה 1 תגובה אחרונה
    1
  • clickoneC מנותק
    clickoneC מנותק
    clickone
    השיב לdovid ב נערך לאחרונה על ידי
    #20

    @dovid
    ה3 זה הטוקן 😮
    הוא רוצה לברוח מהטוקן. זה הכל.
    (לחסוך כמה שורות קוד וכנראה כמה כאבי ראש 🙂 )

    אין טסט כמו פרודקשן.

    המייל שלי urivpn@gmail.com

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

  • 1
  • 2
  • התחברות

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

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

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

  • התחברו או הירשמו כדי לחפש.