שליחת הודעה לקליינט בווב סוקט מתהליכים נפרדים
-
שרת ב NodeJs.
משתמש (לצערי) בפריימוורק שנקרא Sails. המבוסס express וספריות בסיסיות נוספות.
פיצלתי את השרת לכמה מופעים, עקב עומסים.
כל מופע הוא בעצם תהליך נפרד לגמרי שמאזין לפורט אחר, וה nginx מפנה כל תת דומיין לפורט אחר.יש תקשורת webSocket על בסיס Socket.IO.
כל קליינט נרשם לשרת ברגע שהוא מתחבר, והשרת רושם את ה socket id שלו.אך שמתי לב שכל אחד מהתהליכים יכול לשלוח הודעה גם לסוקטים שנרשמו בהתליך אחר (בהינתן ה ID של הסוקט הנשמר כאמור ב DB).
התפלאתי איך זה יכול להיות, הרי כל אחד מאזין לפורט אחר, אז איך הוא בכלל מגיע לסוקט שנרשם בתהליך אחר.
יש למישהו הסבר איך זה אפשרי?
והאם תהיה אפשרות לעשות זאת גם מכתובות IP נפרדות ?תודה ושבוע טוב
-
@מנצפך אם ההנחות שלך נכונות, אין לי שום הסבר, זה באמת חידה
אני נוטה לחשוב שאיפשהו יש לך הנחה לא נכונה. אני לא מצליח לנחש איפה בדיוק...
(אולי משהו בקובץ ההגדרה של nginx שמנתב את כל הווב סוקטים לאותו תהליך?)(עיין עוד: https://socket.io/docs/using-multiple-nodes/ ולפום ריהטא מבואר להדיא שאי אפשר לשלוח הודעה לסוקט שלא התחבר לתהליך שלך, בלי להשתמש ב-
io.adapter
)