דף הצ׳אט נטען אבל החיבור החי נכשל: היכן לחפש
הדף והתעבורה של הצ׳אט הם בקשות שונות. בדקו את ה-WebSocket, את זרם האירועים או את הסקר הארוך, ואז הפרידו בין הגדרה, מסירה ותוחלת חיים.
פתחו את חלונית הרשת לפני טעינת דף הצ׳אט, ואז מצאו את הבקשה שנושאת את ההודעות ולא זו שמציירת את המעטפת. המסמך, הסקריפטים, חילופי הכניסה ותעבורת הצ׳אט יכולים כולם ללכת למארחים שונים. רוב הדיווחים שה-VPN שבר את הצ׳אט מתארים למעשה כשל של אחת מארבע הבקשות האלה. עקבו אחריהן לפי הסדר והתשובה בדרך כלל נראית בשתי הדקות הראשונות.
מצאו את הבקשה שנושאת את ההודעות
סננו לפי סוג כשהדף מתייצב: WebSocket מופיע כרשומה משלו, זרם אירועים נשאר פתוח עם תגובה גדלה, וסקר ארוך חוזר במרווח קבוע. רשמו את הסכימה, המארח, הפורט והסטטוס של זו שנושאת את העדכונים. שימו לב אם היא התחילה לפני או אחרי הכניסה, כי תעבורה שנפתחת לפני אימות היא בדרך כלל עיצוב שונה מזו שנפתחת אחריו. קראו את כותרות הבקשה של בקשת השדרוג או של סוג התוכן המתקבל, כי הן מזהות את התעבורה שהדף שנפרס בחר בה בפועל.
פוסטים ישנים בפורומים מתארים תעבורה שמוצרים הפסיקו להשתמש בה לפני שנים, אז סמכו על מה שהדפדפן תיעד ולא על המאמר. אם הרשומה חסרה לגמרי, ייתכן שקוד הלקוח מעולם לא ניסה להתחבר, מה שמצביע על כשל מוקדם יותר בסקריפט או בהגדרה. דף שנטען מוכיח רק שהמסמך הגיע, וההבחנה הזו קובעת אם אתם בכלל מאתרים תקלות ברשת.
הגדרה, מסירה ותוחלת חיים נכשלות באופן שונה
WebSocket נפתח בשדרוג HTTP שנענה בסטטוס 101, וכל מה שאחר כך הוא הודעות ממוסגרות ולא שליפת דפים, שני שלבים ש-RFC 6455 מחזיק בנפרד במפורש. זרם אירועים עונה בסוג תוכן זורם ומחזיק את גוף התגובה פתוח. שניהם יכולים להיכשל בפתיחה, להיפתח ולא למסור דבר, או להיפתח, למסור ואז למות בשקט.
wscat -c wss://chat.example.com/socket -H "Origin: https://chat.example.com"
curl -N -H "Accept: text/event-stream" https://chat.example.com/events
תפסו את הכשל המשמעותי הראשון לפני שאתם נוגעים בפרופיל, כי שלושת הזמנים מצביעים על שכבות שונות. אם לחיצת היד לא מסתיימת לעולם, השוו אותה לבקשת HTTPS פשוטה לאותו מארח כדי לראות אם בכלל משהו מגיע אליו. אם היא מסתיימת והודעות לא מגיעות, עקבו אחרי המסגרות או גוף הזרם בזמן שמישהו שולח הודעת בדיקה מחשבון אחר. אם זה עובד ואז נעצר, רשמו את השעה המדויקת ואת קוד הסגירה, כי הצמד הזה מזה את הצד שוויתר.
קוד 1006 פירושו שהשקע נסגר בלי מסגרת סגירה, וכך נראה מתווך או פסק זמן של חוסר פעילות מבפנים לדפדפן. פעימת VPN לא מוכיחה שמושב האפליקציה הפנימי עדיין חי.
המארח החי הוא יעד נפרד
חלקי האחורי של הצ׳אט חיים לעתים קרובות על שם מארח משלהם, לפעמים בפורט אחר או מאחורי תעודה נפרדת. היעד הזה צריך פתרון, מסלול וטיפול פרוקסי משלו, ומינהור מפוצל יכול לכלול את הדף ולהחריג את השקע. פתרו את שם המארח החי מהמכונה של הלקוח ואשרו שהוא עונה בכתובת שאתם מצפים לה באותה רשת. בדקו את שרשרת התעודות במיוחד עבור שם המארח הזה, כי תו כללי שמכסה את האתר לא תמיד מכסה את נקודת הקצה של השקע.
אם פרוקסי נמצא בדרך, אשרו שהוא מתיר את השדרוג או את התגובה הארוכה במקום לאגור אותה. פרוקסים ארגוניים שמשכתבים HTML מטפלים לרוב רע בשדרוגי WebSocket, מה שיוצר דף שמוצג בזמן שהצ׳אט אף פעם לא מתחבר. שתי בקשות לאותו מוצר אינן אפוא שתי בקשות לאותו מארח.
תקנו את רשימת היעדים, לא את בדיקות האבטחה
תיקון רשימת יעדים הוא שינוי ניתוב ושייך למי שבעל המסלול. הקלת אימות תעודות או הסרת כותרת Origin היא שינוי אבטחה ושייך למי שבעל המדיניות, שהוא לעתים רחוקות האדם שמאתר התקלה בכרטיס. הדרך המהירה ביותר לגרום לחיבור להופיע היא בדרך כלל הדרך המהירה ביותר לאפשר תקרית.
שאלו את בעל האפליקציה אילו מקורות החלק האחורי מקבל לפני שתשנו משהו, והעבירו את התשובה למי ששולט בפרוקסי. אם שגיאת תעודה מופיעה רק דרך המינהור, בדקו את ההתקן המיירט במקום להתקין עקיפה.
תעדו מספיק כדי למסור הלאה
הממצא השימושי קצר: כתובת הדף, נקודת הקצה החיה, תוצאת לחיצת היד, זמן הכשל הראשון, והאם נעשה ניסיון להתחבר מחדש. הוסיפו את שם פרופיל ה-VPN ואת הרשת שבה הייתם, וכל קורא יוכל לשחזר את הבדיקה בלי לשאול שש שאלות. השחירו עוגיות, כותרות הרשאה וגופי הודעות, והעדיפו צילום מסך של עמודת הזמנים על פני ייצוא ארכיון מלא. מסגרות וארכיוני רשת עשויים להכיל הודעות פרטיות ואסימוני מושב, אז בדקו לפני שמצרפים משהו.
אם הכשל הוא סגירה שקטה, כללו את קוד הסגירה ואת מרווח חוסר הפעילות שקדם לו, כי הצמד הזה מזה בדרך כלל את בעל פסק הזמן. מסרו את התיעוד לבעל האפליקציה או לשער במקום לנחש בעצמכם ערך פסק זמן. התשובה שלהם לגבי התנהגות שמירת החיים הנתמכת היא זו שסוגרת את הכרטיס.