באתר צ'אט רולט אפשר לקיים שיחות וידאו צ'אט עם משתמשים שונים מהעולם. בלחיצה על כפתור, המערכת מוצאת משתמש אחר, אקראי ופנוי שאפשר לשוחח איתו, בלחיצה חוזרת על הכפתור המערכת מוצאת אדם חדש.
המיוחד באתר הוא שהגולשים יכולים לקיים שיחת וידאו צ'אט ללא צורך בשימוש בשרת, הקלט מהמצלמה והמיקרופון שלהם עוברים ישירות בין שני המחשבים שלהם.
אפשרות זו (תקשורת ישירה בין שני מחשבים) קיימת החל מגירסא 10 של נגן הפלאש ונקראת בשם Stratus.
Stratus מאפשר תקשורת חד כיוונית בין שני מחשבים. מחשב אחד משדר נתונים (וידאו / אודיו / צ'אט) ומחשב אחר מאזין לנתונים.
במידה ושני המשתמשים צריכים לשלוח ולקבל נתונים (כמו במקרה של צ'אט רולט, בו כל גולש שולח את הקלט מהמצלמה והמיקרופון שלו ויכול לכתוב בצ'אט),
כל אחד משני המשתמשים, פותח ערוץ תקשורת בו הוא משדר נתונים ובנוסף מאזין לערוץ התקשורת של האחר.
ידע מקדים רצוי
שימוש במחלקות: NetConnection, NetStream, Microphone, Camera
הסבר בקצרה:
NetConnection – נועד ליצור חיבור עם מחשב מרוחק
NetStream – נועד לשלוח ולקבל נתונים על גבי NetConnection
Microphone – מאפשר גישה למיקרופונים שמחוברים למחשב, אפשרות לקביעה את איכות הקלט מהמיקרופון ולשלוח את הקלט על גבי NetStream (ככל שהאיכות גבוהה יותר כך תעבורת הנתונים גדולה יותר)
Camera – מאפשר גישה למצלמות שמחוברות למחשב, אפשרות לקבוע את איכות הקלט ולשלוח נתונים על גבי NetStream (ככל שהאיכות גבוהה יותר כך תעבורת הנתונים גדולה יותר)
שידור באמצעות Stratus
כדי להתחיל לשדר נתונים (וידאו / אודיו / צ'אט) , מתכנת פלאש צריך להירשם באתר של Adobe ולקבל Developer Key, כדי להתחיל לשדר צריך ליצור מופע של המחלקה NetConnection, יצירת אירוע ל-NetStatusEvent.NET_STATUS וקריאה ל-connect עם הארגומנט שקיבלת כאשר נרשמת באתר של Adobe.
לאחר מכן, בתוך האירוע שיצרת, כאשר e.info.code (שם הארגומנט של האירוע הוא e) שווה ל-NetConnection.Connect.Success, הפעולה הראשונה היא יצירת מופע של המחלקה NetStream, בארגומנט הראשון צריך להגדיר את המופע של NetConnection ובארגומנט השני להגדיר: NetStream.DIRECT_CONNECTIONS
הפעולה השנייה היא קבלת המחרוזת שנמצאת בתוך MyNetConnection.nearID (כאשר שם המופע של המחלקה NetConnection הוא MyNetConnection), את המחרוזת הזאת צריך לשלוח לכל מי שרוצה להאזין לשידור, כי רק באמצעותה אפשר להתחבר לשידור.
השידור של אפליקציית וידאו ואודיו מבוצע ע"י:
MyStream.attachCamera(Camera.getCamera());
MyStream.attachAudio(Microphone.getMicrophone());
MyStream.publish("MyName");
MyName יכול להיות כל מחרוזת, כדי להאזין לשידור יהיה צריך לכתוב את אותה המחרוזת בדיוק.
MyStream הוא שם המופע של המחלקה NetStream שיצרת מקודם.
האזנה לשידור שמבוצע באמצעות Stratus
כדי להתחבר לשידור מסויים צריך לקבל את ה-nearID של השידור, אפשר לקבל אותו בדרכים שונות, לדוגמא ע"י שימוש ב-Web Service.
שליחת מחרוזת זו (nearID) היא מעבר לסקופ של מאמר זה, כדי לא להרחיק לכת מההסבר על הצורה בה צ'אט רולט עובד.
לאחר שמחרוזת ה-nearID ידועה אפשר להאזין לשידור ע"י יצירת מופע של המחלקה NetConnection, בדיוק כמו שבוצע בעת השידור (הגדרת אירוע סטטוס וקריאה למתודה connect עם ארגומנט מסויים שהתקבל בעת הרישום באתר המפתחים של Adobe), בתוך אירוע הסטטוס, כאשר e.info.code (שם הארגומנט של האירוע הוא e) שווה ל-NetConnection.Connect.Success, צריך ליצור מופע של המחלקה NetStream, כאשר הארגומנט הראשון הוא המופע של NetConnection והארגומנט השני הוא ה-nearID של המשדר.
לאחר מכן, קריאה ל:
PartnerStream.play("MyName"); כאשר PartnerStream הוא שם המופע של המחלקה NetStream.
ארכיטקטורת אתר צ'אט רולט
אפליקציית הפלאש שולחת לשרת את ה-nearID של כל גולש חדש שמתחבר לאתר.
לאחר מכן כאשר הגולש לוחץ על כפתור "חפש משתמש אחר לשיחה" (בשם כזה או אחר) נשלח חיווי לשרת שהגולש רוצה לשוחח עם משתמש חדש, השרת מחפש משתמש אחר, אקראי ופנוי. לאחר שמשתמש אחר נמצא השרת שולח לכל אחד משני המשתמשים את ה-nearID של השני וכך הם יכולים ליצור קשר באמצעות Stratus.
אפליקצייה לדוגמא
http://www.gamedevstudio.co.il/ChatP2P
קישור לקוד-מקור
http://www.gamedevstudio.co.il/ChatP2P/code.rar