Installing Flash Remoting and AMFPHP

Posted by PunNeng, Thu Nov 24 00:13:00 UTC 2005

Installing Flash Remoting

ถ้าคนไม่เคยทำ Flash มาก่อน ดูเหมือนจะลำบากหน่อยกับการที่จะมาใช้ Remoting อาจจะต้องไปหา Flash มาติดตั้งก่อน แล้วก็ลองฝึก ActionScript สักหน่อย ตำราก็หาไม่ยาก มีเยอะ หรือจะไปที่ actionscript.org ก็ได้

ติดตั้ง Flash Remoting Component

ในการที่จะเข้าถึง Flash Remoting ต้องติดตั้ง AS2 Remoting Component ก่อน เลือกเอา ว่าจะใช้ตัวไหน

ทำความคุ้นเคยกับ Remoting ก่อน

5 สิ่ง ที่จะได้หลังจากการติดตั้ง
  • NetConnection Debugger จะช่วยแสดง message ต่างๆ ที่เราส่งไปหา server จะช่วยเรา debug ได้เป็นอย่างดี หลังจากติดตั้งไปแล้ว ใน Flash ให้ไปที่ Window > Other Panels > NetConnection Debugger ถ้าหาตัวนี้ไม่เจอ ให้ไปที่ C:\Documents and Settings\{Your username}\Local Settings\Application Data\Macromedia\Flash MX 2004\en\configuration\WindowSWF\NetConnection Debugger.swf
  • Service Browser จะช่วยแสดง services ต่างๆ ที่คุณสร้างเอาไว้ แต่อันนี้ยังไม่ได้ทำงานร่วมกับ AMFPHP1 ให้ไปที่ Windows > Other Panels > Service Browser ถ้าไม่เจอ มันจะอยู่ที่เดียวกับ NetConnection Debugger.swf
  • ใน Help ของ Flash จะมี topic เกี่ยวกับ remoting โผล่ขึ้นมา
  • Library ของ Remoting จะอยู่ที่ Window > Common Libraries > Remoting ต้อง เอามันมาแปะไว้บนงานของเราด้วยนะ ไม่งั้นรันไม่ออก
  • ตัว connenct component จะอยู่ที่ Components > Data components > RemotingConnector
(1) ถ้าติดตั้ง AMFPHP ไปแล้ว เราจะสามารถ generate code บนหน้า browser ได้เลย ทุ่นแรงได้เยอะ

Installing AMFPHP

ความต้องการของระบบ

อันดับแรกเลยคงต้องติดตั้งชุด PHP ก่อน ใครสนใจใช้อะไร ค่ายไหนตามสบายคับ แต่ผมใช้ XAMPP อาจจะเป็น AppServ ก็ได้ แต่ขอเป็น PHP4 เป็นอย่างต่ำ(> 4.3.0) เราจะได้ test ได้ในเครื่องเราเอง และก็อย่างลืมไป enable error logging ด้วยละ เพราะตอน debug ตัว log file จะช่วยเราได้อย่างมาก

วิธี enable error logging บน Apache

เปิด php.ini แล้ว search 'log_errors' แล้วเปลี่ยนค่าให้เป็น On แล้ว restart Apache ก็เสร็จสิ้น บรรดา message ทั้งหมดที่จะเกิดขึ้น ก็จะไปปรากฎบน log file ตัวนี้จะช่วย debug ได้เยอะ แต่ถ้ามือใหม่ ก็จะมี NetConnect Debugger โดยใช้ NetConnection.Call.BadVersion คอยช่วยอยู่ (ตัวอย่าง)

ติดตั้ง AMFPHP บน Server

Download here จากนั้นก็ทำการ copy ไปยัง path แรกของเว็บของเรา แล้วเปลี่ยนชื่อให้เป็น /flashservices จะดีมาก แต่จริงๆ แล้วไม่ต้องเปลี่ยนก็ได้ แต่เราต้องไปเปลี่ยนค่าในหลายๆ จุดบนใน Remoting

gateway.php

เปลี่ยนค่าในนี้นิหน่อย ตามนี้เลย

<?php
$gateway->setLooseMode(true);
$gateway->setCharsetHandler("iconv", "UTF-8", "UTF-8");
$gateway->setWebServiceHandler('php5');
?>

ทดสอบการติดตั้ง

หลังจากที่เราทำการเปลี่ยนค่าอะไรนิหน่อยแล้ว ต่อไปก็มาดูว่า AMFPHP ของเราทำงานหรือไม่ โดยการเปิด http://localhost/flashservices/gateway.php แล้วจะมีข้อความอีกเล็กน้อยมาบอกว่าติดตั้งได้ถูกต้องแล้ว นั่นละ เสร็จเรียบร้อย ถ้าไม่ออก ลองดู path อีกที

หรือลอง http://localhost/flashservices/debuggateway.php ก็จะได้ผลคล้ายๆ กัน แต่ debuggateway.php จะเป็น gateway ที่ใช้สำหรับช่วงที่กำลังพัฒนางานอยู่ โดยจะทำงานผ่าน gateway.php อีกที โดยมันจะเรียกผ่าน cURL ใช้ตัวนี้ ถ้าไม่อยากไปยุ่งกับ error_logs จาก php โดยตรง ถ้า log จาก php มาไม่ถึง(ด้วยการใช้ FaultEvent.fault.faultstring) ให้ใช้วิธีข้างบนที่ใช้ NetConnection.Call.BadVersion แก้ขัดเอา
ปัญหาที่มันไม่ยอมสมประกอบก็คือ AMFPHP เป็นผลมาจากการ reverse engineering มาจาก AMF ที่สร้างโดย Macromedia(ตอนนั้น) เป็นธรรมดา ที่ผลของการ reverse จะไม่ปกติ 100%

ติดตั้ง HTML Service browser

เปิด browser/config.inc.php เพื่อไปตรวจดู path ให้แน่ใจเสียก่อน path จากนั้นก็เปิด http://localhost/flashservices/browser/ จะมี sevice ให้เราปรับแต่งกันได้ แล้วจะมีหน้าต่างที่คอย generate ActionScript ให้เราด้วย อันนี้จะช่วยเรามากทีเดียว

ฝากไว้

มาถึงตรงนี้ คงพอจะมองออกเป็นรูปเป็นร่างแล้ว เริ่มจากตัว Flash มี Remoting Framework อยู่แล้ว เหลือเพียง Gateway เท่านั้น ที่จะมาเป็นตัวต่อเข้ากับ back-end ต่างๆ เพียงแต่อันนี้ ผมเลือก PHP ซึ่งมีตัว gateway หลายตัวและผมก็เลือก AMFPHP จากนั้น ตัว Gateway ก็จะทำการต่อเข้ากับ back-end ของเรา


ลองสังเกต ว่าการใช้ Flash Remoting มีข้อกำหนดอยู่อย่างเดียวคือ เราจะใช้ back-end เป็นอะไร เท่านั้น เพราะฉะนั้น บน Host ของเราจริงๆ เป็นอะไรก็ได้ ไม่มีข้อกำหนด ขอเพียงมีเงื่อนไขที่ตามที่เขียนๆ มา เท่านั้นเอง ถ้าเป็น back-end เป็น PHP เราจะต้องใช้ Gateway ที่สนับสนุน PHP เช่น AMFPHP, PHPObject หรืออื่นๆ ถ้าเป็น Java ก็ต้องใช้ OpenAMF, RemotingMX for java หรืออื่นๆ ตามที่ว่าไปแล้ว

คราวหน้าเราจะมา HelloWorld กัน ใน HowTo ครับ

แก้ไขล่าสุด วันที่ 15 มิถุนายน 2550 เวลา 3.10 น.

ข้อมูลจาก
http://www.amfphp.org/docs/installingremoting.html
http://www.amfphp.org/docs/installingamfphp.html

Filed Under: General | Tags: amfphp flash flash remoting howto installing

Comments

Have your say

A name is required. You may use HTML in your comments.




codegent: we're hiring