Friday, April 20, 2007

Vuze กับเขาด้วย

ใน blognone มี Review Vuze Beta
เห็นแล้วก็ตื่นเต้นไปกับเขาด้วย
แต่ที่ตื่นเต้นไม่ใช่ความสวย หรือเรื่อง load bit.
แต่เป็นเรื่องการ integrate browser เข้ากับ SWT Application

จริงๆแล้ว SWT มี browser widget มานานมากแล้ว
แต่มันก็มี feature ที่จำกัดอยู่ เช่น ไม่สามารถสื่อสารระหว่าง javascript กลับมายัง Java Application
ที่ห่ออยู่ข้างนอกได้

ในหน้าจอของ Vuze ที่ mk capture มา
ผมแอบเห็นว่า มันน่าจะส่ง message คุยกันระหว่าง browser กับ Java ได้
ก็เลยไปไล่ source code ของ Vuze ดู ว่าเขา implement มันอย่างไร

จากการไล่ source code ดู ก็พบว่า
เขาพยายาม implement Message Architecture ที่คุยได้ทั้งสองทาง
คือจาก java ไป Browser และจาก Browser ไป Java

โดยจากฝั่ง Java ไป Browser เขาใช้กลไกปกติ ก็คือ
method execute ใน org.eclipse.swt.browser.Browser

ส่วนขากลับ นี่สิ เส้นผมบังภูเขา
(ผมเคยอยากได้ feature นี้เมื่อ 4 ปีก่อน แต่สุดท้ายก็หาทางทำไม่ได้)
เขาใช้วิธีส่ง message ผ่านทาง status bar ของ browser
อันนี้เป็น javascript ของเขา
function sendRealMessage ( message ) {
sequence++;
window.status = 'AZMSG' + ';' + sequence + ';' + message;
window.status = '';
}

ส่วนในฝั่ง java ก็แค่ add StatusTextListener เข้ากับ browser widget
แล้วก็เช็คดูว่า มี message ที่มี prefix 'AZMSG' หรือเปล่า
ถ้าใช่ก็ feed เข้า Message channel ต่อไป

Related link from Roti

No comments: