אתר מאמרים
מעגל הכותבים אתר מאמרים קהילתי
שלום אורח!

פיתוח אתר כמו צ'אט רולט

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

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

Stratus מאפשר תקשורת חד כיוונית בין שני מחשבים. מחשב אחד משדר נתונים (וידאו / אודיו / צ'אט) ומחשב אחר מאזין לנתונים.במידה ושני המשתמשים צריכים לשלוח ולקבל נתונים (כמו במקרה של צ'אט רולט, בו כל גולש שולח את הקלט מהמצלמה והמיקרופון שלו ויכול לכתוב בצ'אט),כל אחד משני המשתמשים, פותח ערוץ תקשורת בו הוא משדר נתונים ובנוסף מאזין לערוץ התקשורת של האחר.

ידע מקדים רצוישימוש במחלקות: NetConnection, NetStream, Microphone, Cameraהסבר בקצרה:NetConnection – נועד ליצור חיבור עם מחשב מרוחקNetStream – נועד לשלוח ולקבל נתונים על גבי NetConnectionMicrophone – מאפשר גישה למיקרופונים שמחוברים למחשב, אפשרות לקביעה את איכות הקלט מהמיקרופון ולשלוח את הקלט על גבי 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


אודות מחבר המאמר

המאמר נכתב ע"י אלעד כהן - מתכנת פלאש בחברת GAME DEV LTD (גיימדב בע"מ) העוסקת בפיתוח אפליקציות לפייסבוק, פיתוח אפליקציות לאייפון ופיתוח משחקי מחשב.
דרושים בתחום הכתיבה | תנאי שימוש ומדיניות פרטיות | תוכן המפרסמים באתר מופץ ברשיון ייחוס-איסור יצירות נגזרות של Creative Common License.
כל הזכויות שמורות © Circle.co.il 2009-2012 - מאמרים להפצה חופשית מאת מעגל הכותבים.