צפייה מרחוק בזמן-אמת במשתמשי אפליקציית פלאש
נכתב על ידי: אלעד כהן
תאריך: 15/08/10

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

האפשרות השנייה מיושמת ע"י הכנה של שני קבצי פלאש חדשים:
הקובץ הראשון AppLoader.swf יטען את האפליקציה בה אנחנו רוצים לצפות (ע"י שימוש במחלקה Loader).
והקובץ השני Viewer.swf (בו ישתמש הצופה) ישמש לצפייה מרחוק של האפליקציה, שני הקבצים האלו ייצרו חיבור בינהם ויעבירו נתונים לגבי פעילות הגולש באפליקציה.

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

הסבר על הקובץ AppLoader.swf
קובץ זה מקבל שלושה פרמטרים ב-Flash Vars:
ConnectionString – זוהי מחרוזת ייחודית של המחשב הצופה, לפי מחרוזת זו Stratus יודע לאיזה מחשב-צופה להתחבר.
SwfUrl – נתיב קובץ ה-swf של האפליקציה המקורית
SendScreenshotDelay – פרק הזמן במילי-שניות בין כל שליחה של נתונים למחשב הצופה

AppLoader.swf מבצע חיבור באמצעות ConnectionString למחשב הצופה, טוען את האפליקציה המקורית שנמצאת בכתובת SwfUrl, אחת לפרק הזמן שמוגדר ב-SendScreenshotDelay שולח צילום מסך של האפליקציה למחשב הצופה ובכל תזוזה של העכבר, מיקומו נשלח למחשב הצופה.
צילום המצב הנוכחי של האפליקציה מבוצע ע"י שימוש ב: BitmapDataInstance.draw(this);

הסבר על הקובץ Viewer.swf
בעת ההפעלה של הקובץ, מופיעה מחרוזת בחלק העליון, מחרוזת זו היא ה-ConnectionString שצריך להגדיר ב-Flash Vars של AppLoader.swf (בכל הפעלה של הקובץ, המחרוזת שתופיע תהיה שונה)

אפליקציית הדוגמא נועדה רק להדגים שניתן לבצע צפייה מרחוק בזמן-אמת במשתמשים ללא שינוי קוד המקור של האפליקציה, אפשר להוסיף לה עוד מגוון אפשרויות, כמו:
א. התחלת שיחת אודיו ווידאו ע"י הצופה
ב. הצגה של כל המשתמשים ובחירה באיזה צופה רוצים לצפות
ג. שליחת הפיקסלים שבוצע בהם שינוי בלבד, כך יהיה אפשר להפחית את ערך ה-SendScreenshotDelay

קישור לקוד המקור
http://www.gamedevstudio.co.il/RemoteView/code.rar


 
אודות המחבר

המאמר נכתב ע"י אלעד כהן - מתכנת פלאש בחברת GAME DEV LTD.

המאמר הודפס מאתר portal-asakim.com - אתר מאמרים עסקיים ומקצועיים
http://www.portal-asakim.com/Articles/Article10288.aspx