ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

ในการร้องขอข้อมูลจาก Browser ไปยัง Server  มีวิธีหลายวิธี เช่น เรียกผ่าน Browser เอง อย่างการกรอก URL  บน Address Bar หรือการคลิกลิงค์ในบราวเซอร์ , เรียกผ่าน Ajax โดยการใช้ความสามารถของบราวเซอร์  คือ XMLHttpRequest ในการร้องขอข้อมุล และ เรียกผ่าน WebSocket โดยการใช้ความสามารถของ HTML5 ในการร้องขอข้อมูล   ในบทความนี้ จะพูดถึงข้อแตกต่างระหว่าง Ajax และ WebSocket ครับ

 

          อธิบายหลักการของ XMLHttpRequest กันก่อน มันเป็นส่วนหนึ่งของ Browser มาหลายปีแล้วถึง IE5 IE6 กันเลยทีเดียว โดยใน IE5 IE6 อยู่ในรูปของ ActiveX  ซึ่งหลัการใช้  AJAX เป็นการให้บราวเซอร์ทำการร้องขอข้อมูลไปยัง Server และให้ Ajax รอรับการตอบกลับจาก Server ส่งกลับไปยัง Browser อีกที โดยลักษณะการเชื่อมต่อของ Ajax ที่สำคัญคือ การร้องขอข้อมูล 1 ครั้ง ต่อ 1 Request แล้วก็จบไป  ส่วน Websocket จริงๆมันก็มีมานานแล้วเช่นกัน แต่ในช่วงแรกๆ การใช้งาน WebSocket จะยุ่งยากซักหน่อย โดยจะต้องมีการเรียกใช้ Library ภายนอกเพื่อให้สามารถเรียกใช้งาน WebSocket ได้ แต่ในปัจจุบัน WebSocket ได้ถูกรวมเป็นความสามารถหนึ่งของ HTML5 แล้ว ทำให้การใช้งาน WebSocket ในปัจจุบันไม่ได้ยุ่งยากเหมือนเช่นแต่ก่อน



          WebSocket มีข้อแตกต่างจาก Ajax ที่สำคัญ คือ WebSocket จะทำการเชื่อมต่อกับ Server เมื่อได้รับการร้องขอ และจะคงการเชื่อมต่อกับ Server ไว้ จนกว่าจะมีการยกเลิกการเชื่อมต่อ และเมื่อไรก็ตามที่ Server ต้องการส่งข้อมูลกลับมายัง Browser Server จะสามารถส่งข้อมูลผ่าน WebSocket กลับมายังบราวเซอร์ได้ทันที โดยที่ไม่จำเป็นต้องมีการร้องขอมาจาก Server ก่อน   

  Ajax  WebSocket 
การรองรับ ฝั่งบราวเซอร์  บราวเซอร์แทบทั้งหมดในปัจจุบัน   บราวเซอร์ที่รองรับ HTML5 บางตัว หรือ ใช้ Library ภายนอก
การรองรับฝั่ง Server   สามารถใช้ได้กับ Server ทั่วไป  ใช้ร่วมกับ Server ที่รองรับการเชื่อมต่อ WebSocket ได้เท่านั้น
 การเชื่อมต่อ  เชื่อมต่อได้ทีละครั้ง  เชื่อมต่อตลอดเวลา จนกว่าจะถูกยกเลิก
การใช้งานแบบ Realtime ส่งคำสั่งร้องขอข้อมูลไปยัง Server และรอการตอบกลับจาก Server เป็นรอบๆ ถ้ามีข้อมูลใหม่ต้องรอให้ Browser ร้องขอข้อมูลไปใหม่ถึงจะได้รับ ส่งคำสั่งการเชื่อมต่อแค่ในครั้งแรก และรอรับการตอบกลับจาก Server ได้อย่างต่อเนื่อง ถ้ามีข้อมูลใหม่ Server สามารถส่งข้อมูลกลับมายังบราวเซอร์ได้ทัน
  ajax websocket

จากข้อแตกต่างระหว่าง Ajax และ WebSocket ตามตาราง จะเห็นว่าทั้ง Ajax และ WebSocket ต่างก็มีจุดเด่นต่างกัน

            การใช้งานที่ต้องมีการร้องขอข้อมูลแบบ Realtime จาก Server จะเห็นว่า WebSocket จะมีคุณสมบัติเหมาะสมกว่า เพราะเมื่อไรก็ตามที่มีข้อมูลใหม่ Browser ก็จะสามารถได้รับข้อมูลในทันที ยกตัวอย่างเช่นโปรแกรม Chat ที่ข้อมูลใหม่จะเกิดตอนไหนก็ไม่รู้ ถ้าใช้ Ajax การจะได้รับข้อความใหม่ก็ต้องรอการร้องขอจาก Browser ในแต่ละรอบเท่านั้น ในขณะที่ WebSocket จะสามารถได้รับข้อมูลแทบจะในทันที ที่มีการโพสต์

          

ช่องทางการศึกษาเพิ่มเติมข่าวสารที่น่าสนใจเกี่ยวกับ : บทความทั่วไป

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
การเข้าใช้งานสำหรับลูกค้าเพื่อซื้อห้องพักหรือขายห้องพัก อโกด้า
โดย milk2533 พ 25 พ.ย. 2020 6:43 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
3
พ 25 พ.ย. 2020 6:43 pm โดย milk2533
อุปโภค กับ บริโภค ต่างกันอย่างไร
โดย milk2533 พ 25 พ.ย. 2020 6:09 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
3
พ 25 พ.ย. 2020 6:09 pm โดย milk2533
Lot ผลิต และ วันหมดอายุ สินค้า ดูอย่างไร
โดย milk2533 พ 25 พ.ย. 2020 5:48 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
11
พ 25 พ.ย. 2020 5:48 pm โดย milk2533
ขนส่งสาธารณะ คืออะไร
โดย milk2533 พ 25 พ.ย. 2020 5:26 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
7
พ 25 พ.ย. 2020 5:26 pm โดย milk2533
ใบเสร็จน้ำมันรถที่สามารถนำมาใช้ค่าใช้จ่ายได้ สังเกตอย่างไร
โดย milk2533 พ 25 พ.ย. 2020 4:57 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
6
พ 25 พ.ย. 2020 4:57 pm โดย milk2533
อัพเดทความปลอดภัย 7 จุด!!! ใน Joomla เวอร์ชั่นใหม่ 3.9.23
โดย tsukasaz พ 25 พ.ย. 2020 11:36 am บอร์ด MindPHP News & Feedback
1
32
พ 25 พ.ย. 2020 12:46 pm โดย prmindphp
แนะนำหนังสือ Pre-Order PHP - high-performance ด้วย Swoole
โดย mindphp อ 24 พ.ย. 2020 4:47 pm บอร์ด Programming - PHP
0
15
อ 24 พ.ย. 2020 4:47 pm โดย mindphp
จ่ายเงินสมทบประกันสังคม มาตรา 33 , 39 อย่างไร
โดย milk2533 อ 24 พ.ย. 2020 3:08 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
14
อ 24 พ.ย. 2020 3:08 pm โดย milk2533