Red5 :: SharedObject

Posted by PunNeng, Tue Sep 12 00:28:00 UTC 2006

กลับมาแล้วครับ หลังจากไปซ่อมเว็บอยู่เสียนาน แต่ตอนนี้ก็ยังคงซ่อมอยู่ มีอะไรต้องทำอีกเยอะ เข้าเรื่องกันเลยดีกว่า จากครั้งที่แล้ว ผมได้ค้างไว้ว่าจะมา implement ให้ดู ไปๆ มาๆ ผมขี้เกียจครับ เลยเอาเป็นแบบรวบรัดละกัน ตัวอย่างต่อไปนี้ จะเป็นตัวอย่างการส่งผ่านตัวแปรจาก client ตัวนึง ไปยัง client ทุกๆ ตัว โดยผ่าน SharedObject ซึ่งสามารถนำไปต่อยอดในการทำ game online หรือ chat ได้

อ่า...
เปิด red5 มารันก่อน ใน Start->All Programs->Red5->Red5.exe แล้วเราจะได้หน้าต่าง dos มาหน้านึง

จากนั้นไปที่ flash ของเรา เริ่มด้วยการต่อกับ NetConnection ตามนี้

var my_nc:NetConnection = new NetConnection();
my_nc.connect("rtmp://localhost/SOSample");

ส่วน event ต่างๆ ของ NetConnection สามารถดูได้ที่นี่

โดยตัว service ที่เป็น default มันมีอยู่แล้ว และ SOSample ก็เป็นหนึ่งในนั้น สำหรับการสร้าง service ขึ้นมาใช้เอง ผมแปะไว้ก่อนละกัน(อีกแล้ว มันต้องใช้ eclipse มา build project กันใหม่เลย มันวุ่นวาย เอาไว้ก่อนละกัน) เมื่อรันได้แล้ว ในหน้า dos อันนั้น จะมีข้อความชุดนี้ขึ้น

jvm 1    | [WARN] 1323984 IoWorker-1:( org.red5.server.net.rtmp.RTMPMinaIoHandle
r.warn ) Is tcp delay enabled: false
jvm 1    | [DEBUG] 1323984 IoWorker-1:( org.red5.server.Server.debug ) Check hos
t and path: localhost/SOSample
jvm 1    | [DEBUG] 1323984 IoWorker-1:( org.red5.server.CoreHandler.debug ) Conn
ect to core handler ?
jvm 1    | [DEBUG] 1323984 IoWorker-1:( org.red5.server.adapter.ApplicationAdapt
er.debug ) appConnect: RTMPMinaConnection from 127.0.0.1:1209 to localhost (in:
3312, out: 3073)
jvm 1    | [DEBUG] 1323984 IoWorker-1:( org.red5.server.adapter.ApplicationAdapt
er.debug ) appJoin: Client: 2 >> [WebScope@aae86e Depth = 1, Path = '/default',
Name = 'SOSample']

ในนี้จะเป็น logs ที่บอกรายละเอียดต่างๆ สำหรับ event ที่เข้ามา

ต่อจากนี้ จะเป็นหัวใจสำหรับการใช้งาน ShareObject

เพิ่ม code ต่อจากข้างบนดังนี้

var get_so:SharedObject = SharedObject.getRemote("test",my_nc.uri, true);
get_so.onSync = function() {
  trace(get_so.data.my_text);
};
get_so.connect(my_nc);

บรรทัดแรกก็ประกาศตัวแปร SharedObject ขึ้นมาก่อน ซึ่งเราจะใช้ getRemote คือการเรียกใช้ SharedObject ผ่าน server แล้วบรรทัดต่อมา จะเป็น event ที่ชื่อว่า onSync ซึ่ง event ตัวนี้จะเป็นตัวที่จะถูกเรียกเมื่อได้รับข้อมูลที่ส่งมาจาก server ผมว่าส่วนสำคัญอยู่ที่ตรง onSync ตัวนี้ละครับ เขียนจัดการกับมันให้ดีๆ

เขียนส่วนรับไปแล้ว มาดูส่วนที่ส่งกันบ้าง

_root.onMouseDown = function(){
  var set_so:SharedObject = SharedObject.getRemote("test",my_nc.uri, true);
  set_so.data.my_text = "helloworld";
}

จากน้นก็ประกาศตัวแปร SharedObject มาอีกตัว เพื่อทำการส่งข้อมูล เมื่อ onMouseMove ทำงาน มันจะทำการ set ข้อมูล แต่การเซ็ตนี้สร้างจาก getRemote คือเซ็ตบนฝั่ง server เมื่อเซ็ตแล้ว onSync ของ client แต่ละตัวก็จะทำงาน

ปล. มีปัญหา เปิด help ได้ที่ http://livedocs.macromedia.com/flashcom/mx2004 ปอ. ในความเป็นจริง ยังสามารถใช้ library ของ red5 เองได้ด้วย เข้าไปได้ดูไ้ด้ที่นี่

แก้ไขล่าสุด วันที่ 13 กรกฏาคม 2550 เวลา 23.23 น.

Filed Under: General | Tags: actionscript flash howto red5 sharedobject

Comments

Have your say

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




codegent: we're hiring