วันจันทร์ที่ 11 มกราคม พ.ศ. 2559

ws part 12 WebSocket (basic) example

>> ทิ้งไว้เสียนานก็ควรได้เวลาเขียนทดสอบกันเสียที สำหรับ web socket นี้ก็จะมีทั้งฝั่งที่เป็น server (end-point) กับ client หรือผู้ขอใช้บริการ (ในที่นี้คือ browser ใช้ภาษา javascript ติดต่อเข้ามา)

>> web socket ที่กำลังพูดถึงนี้เป็นหนึ่งใน component ของ HTML 5, และไลบรารีที่ผมใช้ก็คือ javaee-api-7.0.jar เรามาดูฝั่ง client ก่อนว่าจะใช้ browser ติดต่อกับ web socket ได้อย่างไร

>> เพื่อนๆทราบอยู่แล้วว่าภาษาพื้นฐานของ browser ที่จะใช้ติดต่อกับ web socket ก็คือภาษาจาวาสคริปต์ ซึ่ง browser ที่รองรับความต้องการดังกล่าวต้องเข้าใจวิธีการทำงานของจาวาสคริปต์ที่ว่า
- สร้างออบเจ็กค์ WebSocket ขึ้นมา
- setting ประดา listener ต่างๆที่ต้องการพร้อมกับตัวจัดการ event (event handler)
- โดยมี function ที่สำคัญดังต่อไปนี้

-- constructor : เพื่อกำหนดค่าเริ่มต้นให้กับออบเจ็กค์ WebSocket และ resource URL ที่ใช้ติดต่อกับ server ปลายทาง (web socket ไง)

-- sent function : ใช้ส่งข้อความซึ่งเรียกว่า message ไปยัง web socket

-- onopen event function : มันจะถูกเรียกทันทีหลังจาก connection หรือการเชื่อมต่อระหว่าง client กับ web socket ถูกสร้างขึ้น

-- onclose event function : มันจะถูกเรียกทันทีหลังจาก connection หรือการเชื่อมต่อระหว่าง client กับ web socket ถูกยกเลิก

-- onmessage event function : เมื่อไรก็ตามที่มี message ส่งมาถึงหน้าบ้าน (ส่งจาก web socket มาถึง browser) ฟังก์ชันนี้จะทำงาน

-- onerror event function : มันจะถูกเรียกทันทีเมื่อเกิด error นานับประการระหว่างการเชื่อมต่อนี้

-- close function : ใช้ยกเลิกหรือใช้ปิดการเชื่อมต่อของ socket

>> แหม...คันไม้คันมือชักอยากโชว์ตัวอย่างแล้วสิ อีกนิดหนึ่งนะ ขั้นพื้นฐานนี้เพื่อนๆควรทราบว่า web socket เองก็มีเมธอดที่สำคัญซึ่งมีหน้าที่ดังเฉก function ของจาวาสคริปต์ข้างต้นครับ แต่ให้นิยามผ่าน annotations แทน เช่น
- @ServerEndpoint : ประกาศว่าคลาสนี้เป็น web socket นะเออ และก็บังคับให้กำหนดค่า value attribute เพื่อกำหนดเป็นเส้นทางการเข้าถึงอย่างไรล่ะ

- @OnOpen : ถูกเรียกเมื่อ connection ถูกสร้างขึ้น หรือกล่าวว่ามี session เกิดขึ้น

- @OnClose : ถูกเรียกเมื่อปิดการ connection หรือกล่าวว่า session ของผู้ที่เชื่อมต่อสิ้นสุดลง

- @OnMessage : หน้าบ้านได้ส่ง message หรือข้อความเข้ามา เมธอดนี้จึงจะถูกเรียกให้ทำงาน

- @OnError : ดักจับ error ที่เกิดขึ้นระหว่างการเชื่อมต่อผ่านคลาสที่มีความสามารถในการ Throwable

- @PathParam : ใช้ mapping หรือจับ argument ที่ส่งมาเข้ามา เช่น

getBook(@PathParam("id") String isbn)

>> เอาล่ะครับไว้เท่านี้ก่อน และต่อไปนี้คือภาพตัวอย่าง (ไม่ครบคลุมการทำงานทั้งหมดหรอกนะ)










- ภาพนี้สมมติได้ว่ามี client ติดต่อเข้ามา 1 ราย


- ภาพนี้แสดงให้เห็นว่ามี client ติดต่อเข้ามา 2 ราย และรายแรกได้ refresh page หนึ่งครั้ง (กด F5)

>> คืนนี้ฝันดี ไว้ part ต่อไปจะหาตัวอย่างอื่นๆมาอธิบายให้ฟังอีกนะ สวัสดีครับ

>> อ่านตัวอย่างเพิ่มเติมได้จาก
- WebsocketHome.html
- javax-websocket-client-simple-example
- html5_websocket.htm

ไม่มีความคิดเห็น:

แสดงความคิดเห็น