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

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

          

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
งานประจำวันที่ 2 มิถุนายน 2563
โดย natthanit.r2538 อ 02 มิ.ย. 2020 10:11 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
4
31
อ 02 มิ.ย. 2020 7:42 pm โดย natthanit.r2538
มารู้จักจังหวัดสงขลา เมืองสองทะเลกันค่ะ
โดย natthanit.r2538 อ 02 มิ.ย. 2020 4:27 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
7
อ 02 มิ.ย. 2020 4:27 pm โดย natthanit.r2538
ระบบบัญชีคืออะไร มีความสำคัญอย่างไร และจะทำอย่างไรหากต้องการวางระบบบัญชี
โดย natthanit.r2538 อ 02 มิ.ย. 2020 2:13 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
4
อ 02 มิ.ย. 2020 2:13 pm โดย natthanit.r2538
เปิดบริษัทต้องจดทะเบียนภาษีมูลค่าเพิ่มหรือไม่ ภาษีมูลค่าเพิ่มคืออะไร ??
โดย natthanit.r2538 อ 02 มิ.ย. 2020 12:16 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
7
อ 02 มิ.ย. 2020 12:16 pm โดย natthanit.r2538
ภ.ง.ด. 1,3,53 คืออะไร
โดย natthanit.r2538 อ 02 มิ.ย. 2020 11:08 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
7
อ 02 มิ.ย. 2020 11:08 am โดย natthanit.r2538
สรุปการประชุมลูกค้าครั้งแรก
โดย natthanit.r2538 จ 01 มิ.ย. 2020 6:46 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
2
จ 01 มิ.ย. 2020 6:46 pm โดย natthanit.r2538
สวนครัวริมระเบียง
โดย natthanit.r2538 จ 01 มิ.ย. 2020 4:42 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
10
จ 01 มิ.ย. 2020 4:42 pm โดย natthanit.r2538
วิธีการเดินทางจาก สงขลา มา กรุงเทพฯ
โดย natthanit.r2538 จ 01 มิ.ย. 2020 1:47 pm บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
17
จ 01 มิ.ย. 2020 1:47 pm โดย natthanit.r2538
งานประจำวันที่ 1 มิถุนายน 2563
โดย natthanit.r2538 จ 01 มิ.ย. 2020 10:53 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
2
32
อ 02 มิ.ย. 2020 10:00 am โดย natthanit.r2538
note
โดย natthanit.r2538 จ 01 มิ.ย. 2020 10:52 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
6
จ 01 มิ.ย. 2020 10:52 am โดย natthanit.r2538
Work's on Hand ณัฐนิตย์ ร่มบ้านโหล๊ะ M103
โดย natthanit.r2538 จ 01 มิ.ย. 2020 10:49 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
0
4
จ 01 มิ.ย. 2020 10:49 am โดย natthanit.r2538
list ความรู้ที่มี ว่าเคยเรียน หรือ เคยทำอะไรมาบ้าง
โดย natthanit.r2538 จ 01 มิ.ย. 2020 10:48 am บอร์ด M103 - ณัฐนิตย์ ร่มบ้านโหล๊ะ
2
22
จ 01 มิ.ย. 2020 11:08 am โดย natthanit.r2538
B - เข้าเมนูหน้ารวมรายการใน admin ไม่ได้
โดย thatsawan ศ 29 พฤษภาคม 2020 5:58 pm บอร์ด Odoojob.com - Tester
0
1
ศ 29 พฤษภาคม 2020 5:58 pm โดย thatsawan
B - ยังขาดหน้าผลการค้นหา จาก search.php
โดย mindphp ศ 29 พฤษภาคม 2020 6:11 am บอร์ด FDD (Main)
0
1
ศ 29 พฤษภาคม 2020 6:11 am โดย mindphp
B - กล่องค้นหาจากหน้า index ใช้งานไม่ได้ กดแล้วไม่ไปหน้าค้นหา
โดย mindphp ศ 29 พฤษภาคม 2020 5:39 am บอร์ด FDD (Main)
1
1
ศ 29 พฤษภาคม 2020 5:53 am โดย mindphp
B - ไม่ใช่แค่โชว์ icon facebook มันต้องทำลิงค์เพื่อให้คลิกไป
โดย mindphp ศ 29 พฤษภาคม 2020 4:39 am บอร์ด FDD (Main)
1
2
ศ 29 พฤษภาคม 2020 4:51 am โดย mindphp
อัพเดท phpbb 3.3 เเล้ว extenstion ใช้งานไม่ได้
โดย thatsawan พฤ 28 พฤษภาคม 2020 10:08 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
1
112
พฤ 28 พฤษภาคม 2020 10:10 pm โดย thatsawan
วิธีการสร้าง css ที่ใช้งานเฉพาะในบราวเซอร์ safari เท่านั้น
โดย Ittichai_chupol พฤ 28 พฤษภาคม 2020 6:06 pm บอร์ด CSS Knowledge
0
110
พฤ 28 พฤษภาคม 2020 6:06 pm โดย Ittichai_chupol
R - Set Demo เป็น subdomain ของ ตัวนี้
โดย mindphp พฤ 28 พฤษภาคม 2020 6:17 am บอร์ด มารียา ซีฟู้ดส์ - Developer
0
9
พฤ 28 พฤษภาคม 2020 6:17 am โดย mindphp
อยากทราบวิธีการกำหนด ค่า css ให้กับ button โดยกำหนดเฉพาะแต่ละบราวเซอร์
โดย Ittichai_chupol พ 27 พฤษภาคม 2020 8:39 pm บอร์ด HTML CSS
1
42
พ 27 พฤษภาคม 2020 9:15 pm โดย mindphp