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

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

          

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

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
ติดตั้งโมดูลใน joomla 2.5 แล้ว erorr
โดย jamepiyawat อ 12 พ.ย. 2019 8:04 pm บอร์ด Joomla Development
1
7
อ 12 พ.ย. 2019 8:13 pm โดย tsukasaz
การใช้ confirm() เพื่อ แจ้งเตือนการลบข้อมูล
โดย bankjittapol อ 12 พ.ย. 2019 7:12 pm บอร์ด Jquery & Ajax Knowledge
0
6
อ 12 พ.ย. 2019 7:12 pm โดย bankjittapol
ภาพ thailand-football-team
โดย numtan5839 อ 12 พ.ย. 2019 7:10 pm บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
2
10
อ 12 พ.ย. 2019 7:28 pm โดย numtan5839
การใช้ Domvas library แปลง code html แปลงหน้าเว็บ เป็นรูปภาพ
โดย bankjittapol อ 12 พ.ย. 2019 6:43 pm บอร์ด Jquery & Ajax Knowledge
0
5
อ 12 พ.ย. 2019 6:43 pm โดย bankjittapol
B - ต้องการสร้างใบcustomer paymentเมื่อใส่ข้อมูลที่withholding tax ไม่สามารถทำได้
โดย nnamfon.26 อ 12 พ.ย. 2019 6:20 pm บอร์ด M.D.Soft Co.,Ltd. - Tester
0
6
อ 12 พ.ย. 2019 6:20 pm โดย nnamfon.26
รู้จักกับ soil moisture sensor
โดย chaiyasitpraphut อ 12 พ.ย. 2019 5:12 pm บอร์ด IOT - Internet of things
0
8
อ 12 พ.ย. 2019 5:12 pm โดย chaiyasitpraphut
PIR Motion Sensor module คืออะไร
โดย chaiyasitpraphut อ 12 พ.ย. 2019 4:51 pm บอร์ด IOT - Internet of things
0
6
อ 12 พ.ย. 2019 4:51 pm โดย chaiyasitpraphut
แปลง code html เป็น image แต่ไม่แสดงผลลัพธ์
โดย bankjittapol อ 12 พ.ย. 2019 4:44 pm บอร์ด JavaScript & Jquery Ajax
3
15
อ 12 พ.ย. 2019 8:08 pm โดย bankjittapol
วิธีการลงทุนที่ดีที่สุดสำหรับ "มนุษย์เงินเดือน"
โดย somying อ 12 พ.ย. 2019 4:09 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
7
อ 12 พ.ย. 2019 4:09 pm โดย somying
เปิดและปิดไฟ LED ด้วย Blynk
โดย chaiyasitpraphut อ 12 พ.ย. 2019 4:01 pm บอร์ด IOT - Internet of things
0
9
อ 12 พ.ย. 2019 4:01 pm โดย chaiyasitpraphut
เปิดและปิดไฟด้วยเซนเซอร์ตรวจจับความเคลื่อนไหว
โดย chaiyasitpraphut อ 12 พ.ย. 2019 3:20 pm บอร์ด IOT - Internet of things
0
10
อ 12 พ.ย. 2019 3:20 pm โดย chaiyasitpraphut
ส่วนประกอบ Arduino UNO R3
โดย chaiyasitpraphut อ 12 พ.ย. 2019 2:42 pm บอร์ด IOT - Internet of things
0
7
อ 12 พ.ย. 2019 2:42 pm โดย chaiyasitpraphut
VDO - Program Exchange Rate
โดย numtan5839 อ 12 พ.ย. 2019 2:42 pm บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
1
10
อ 12 พ.ย. 2019 3:36 pm โดย thatsawan
การใส่ค่าในช่อง input ด้วย javascript เพื่อจะได้มีค่าอยู่ใน textbox
โดย jamepiyawat อ 12 พ.ย. 2019 2:37 pm บอร์ด Jquery & Ajax Knowledge
0
7
อ 12 พ.ย. 2019 2:37 pm โดย jamepiyawat
วิธีต่อ Nodemcu Esp8266 กับ Sensor ตรวจวัดอุณหภูมิและความชื้น DHT11
โดย chaiyasitpraphut อ 12 พ.ย. 2019 2:23 pm บอร์ด IOT - Internet of things
0
9
อ 12 พ.ย. 2019 2:23 pm โดย chaiyasitpraphut
VDO - Program Check Tracking Thailand Post
โดย numtan5839 อ 12 พ.ย. 2019 2:12 pm บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
1
8
อ 12 พ.ย. 2019 3:36 pm โดย thatsawan
โครงสร้างของภาษา php
โดย chaiyasitpraphut อ 12 พ.ย. 2019 1:38 pm บอร์ด MT35 - นายชัยยะสิทธิ์ พระพุทธ
0
6
อ 12 พ.ย. 2019 1:38 pm โดย chaiyasitpraphut
การเชื่อมต่อฐานข้อมูลด้วย php
โดย chaiyasitpraphut อ 12 พ.ย. 2019 12:08 pm บอร์ด MT35 - นายชัยยะสิทธิ์ พระพุทธ
2
14
อ 12 พ.ย. 2019 12:59 pm โดย chaiyasitpraphut
VDO - Square Root Calculate Program
โดย numtan5839 อ 12 พ.ย. 2019 11:57 am บอร์ด M097 - ตรีเนตร บูรณโพธิ์ทอง
2
10
อ 12 พ.ย. 2019 2:45 pm โดย numtan5839
วิธีป้องกันยุงกัดส่งตรงจากธรรมชาติ ปราศจากสารเคมี
โดย somying อ 12 พ.ย. 2019 12:24 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
15
อ 12 พ.ย. 2019 12:24 pm โดย somying