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

ในการร้องขอข้อมูลจาก 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 จะสามารถได้รับข้อมูลแทบจะในทันที ที่มีการโพสต์

          

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
อยากทราบถ้าหากต้องการที่ทดสอบการทำงานของของ Event cron จะต้องทำอย่างไรบางครับ
โดย Ittichai_chupol ส 04 เม.ย. 2020 10:50 am บอร์ด Programming - PHP
0
6
ส 04 เม.ย. 2020 10:50 am โดย Ittichai_chupol
เทมเพลต Megadeal ของ MooZiiCart สำหรับทำเว็บขายสินค้าออนไลน์
โดย prmindphp ศ 03 เม.ย. 2020 6:39 pm บอร์ด MindPHP News & Feedback
0
12
ศ 03 เม.ย. 2020 6:39 pm โดย prmindphp
เครื่องมือช่วยกรองสินค้า สำหรับค้นหาสินค้าที่ต้องการ
โดย prmindphp พฤ 02 เม.ย. 2020 6:46 pm บอร์ด MindPHP News & Feedback
0
21
พฤ 02 เม.ย. 2020 6:46 pm โดย prmindphp
การเขียน Script สำหรับสร้าง User ใน Joomla
โดย tsukasaz พฤ 02 เม.ย. 2020 3:33 pm บอร์ด Joomla Developing Knowledge
0
44
พฤ 02 เม.ย. 2020 3:33 pm โดย tsukasaz
อยากทราบวิธีการดึงข้อมูลจาก Excel โดยการดึงข้อมูลจาก คอลัมของ Excel มาบันทึกลงในฐานข้อมูล
โดย Ittichai_chupol พฤ 02 เม.ย. 2020 10:09 am บอร์ด Programming - PHP
1
28
พฤ 02 เม.ย. 2020 10:43 am โดย mindphp
เอ้าๆ ใครที่ใบขับขี่หมดอายุในช่วง COVID-19 สามารถอมรมผ่านออนไลน์ ด้วย e-learning ได้เเล้วนะ
โดย thatsawan พฤ 02 เม.ย. 2020 10:09 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
28
พฤ 02 เม.ย. 2020 10:09 am โดย thatsawan
วิธีการเชื่อม api ของ gitlab สำหรับดาวน์โหลดไฟล์ project ใน ภาษา Python
โดย jirawoot พ 01 เม.ย. 2020 3:38 pm บอร์ด Python Knowledge
0
76
พ 01 เม.ย. 2020 3:38 pm โดย jirawoot
สอบถาม ผมจะทำ ci ของ gitlab ผมดูดไฟล์ project จาก api ของ gitlab ได้แล้วทำอย่างไรต่อครับ
โดย jirawoot พ 01 เม.ย. 2020 12:09 pm บอร์ด Programming - C/C++ & java & Python
3
56
พฤ 02 เม.ย. 2020 10:50 am โดย tsukasaz
ผมอัพเกรด joomla 2.5 เป็นเวอร์ชั่นล่าสุด 3.8 หน้าเว็บเวอร์ชั่นเดิมจะหายไปไหมคับ
โดย Anonymous พ 01 เม.ย. 2020 12:00 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
3
48
พ 01 เม.ย. 2020 4:29 pm โดย icphp
ลดอัตราหัก ณ ที่จ่าย เหลือ 1.5% ออกเป็นกฎหมายมีผลใช้บังคับแล้ว!!! นะ เริ่ม 1 เมษายน 2563
โดย thatsawan พ 01 เม.ย. 2020 10:54 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
72
พ 01 เม.ย. 2020 10:54 am โดย thatsawan
วิธีการจัดการกับเด็กๆ กวนใจ เมื่อต้องทำงานจากบ้าน #Work from home
โดย thatsawan พ 01 เม.ย. 2020 9:53 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
37
พ 01 เม.ย. 2020 9:53 am โดย thatsawan
วิธีแก้ไขปัญหา สำหรับ การนำ Template phpbb 3.3 มาใช้ใน phpbb 3.2
โดย thatsawan อ 31 มี.ค. 2020 7:27 pm บอร์ด phpBB user Guide Knowledge
0
76
อ 31 มี.ค. 2020 7:27 pm โดย thatsawan
สอบถาม ผมลองใช้ curl ของ API ของ gitlab แล้ว "message":"401 Unauthorized ครับ
โดย jirawoot อ 31 มี.ค. 2020 5:16 pm บอร์ด Programming - C/C++ & java & Python
1
131
อ 31 มี.ค. 2020 5:35 pm โดย jirawoot
การเชื่อมต่อ API ของ GitLab เพื่อดาวน์โหลดไฟล์
โดย tsukasaz อ 31 มี.ค. 2020 12:52 pm บอร์ด PHP Knowledge
0
1031
อ 31 มี.ค. 2020 12:52 pm โดย tsukasaz
วิธิการใส่ icon favorite เพื่อแสดงในแต่ละ browser
โดย Ittichai_chupol อ 31 มี.ค. 2020 11:14 am บอร์ด Graphic design
4
156
พฤ 02 เม.ย. 2020 4:33 pm โดย thatsawan
สิ่งที่เกิดขึ้นจริงในการประชุมด้วยเทคโนโลยี Conference Call #Work from home
โดย thatsawan อ 31 มี.ค. 2020 10:39 am บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
44
อ 31 มี.ค. 2020 10:39 am โดย thatsawan
ช่วงนี้ Work From Home ก็จะลำบากนิดนึงแหละเนอะ #ทาสเเมว
โดย thatsawan จ 30 มี.ค. 2020 2:29 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
100
จ 30 มี.ค. 2020 2:29 pm โดย thatsawan
อยากทราบวิธีสร้างเว็บหน้าเดียวแบบกรอกข้อมูลเสร็จแล้วประมวลผล
โดย phongkhukhan ส 28 มี.ค. 2020 1:00 am บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
2
339
ส 28 มี.ค. 2020 1:09 am โดย mindphp
แสดงสินค้าที่อยากได้ใน Wishlist ด้วย Module Wishlist
โดย prmindphp ศ 27 มี.ค. 2020 5:26 pm บอร์ด MindPHP News & Feedback
0
181
ศ 27 มี.ค. 2020 5:26 pm โดย prmindphp
ต้องการสร้าง subtype
โดย blackbullx16 ศ 27 มี.ค. 2020 4:15 pm บอร์ด SQL - Database
0
332
ศ 27 มี.ค. 2020 4:15 pm โดย blackbullx16