อะไรคือความแตกต่างที่สำคัญระหว่างโปรโตคอล WebSocket และ STOMP
อะไรคือความแตกต่างที่สำคัญระหว่างโปรโตคอล WebSocket และ STOMP
คำตอบ:
คำถามนี้คล้ายกับการถามความแตกต่างระหว่าง TCP และ HTTP ฉันจะยังคงพยายามตอบคำถามของคุณเป็นเรื่องปกติที่จะสับสนระหว่างสองคำนี้หากคุณกำลังเริ่มต้น
คำตอบสั้น ๆ
STOMP มาจากด้านบนของ WebSockets STOMP กล่าวถึงวิธีการเฉพาะบางประการเกี่ยวกับวิธีแลกเปลี่ยนกรอบข้อความระหว่างไคลเอนต์และเซิร์ฟเวอร์โดยใช้ WebSockets
คำตอบยาว
WebSockets
เป็นข้อกำหนดที่อนุญาตให้มีการสื่อสารแบบสองทิศทางแบบซิงโครนัสระหว่างไคลเอนต์และเซิร์ฟเวอร์ แม้ว่าจะคล้ายกับซ็อกเก็ต TCP แต่ก็เป็นโปรโตคอลที่ทำงานเป็นการเชื่อมต่อ HTTP ที่ได้รับการอัปเกรดโดยแลกเปลี่ยนเฟรมที่มีความยาวผันแปรระหว่างสองฝ่ายแทนการสตรีม
เหยียบ
กำหนดโปรโตคอลสำหรับไคลเอนต์และเซิร์ฟเวอร์ในการสื่อสารด้วยอรรถศาสตร์การส่งข้อความ ไม่ได้กำหนดรายละเอียดการใช้งานใด ๆ แต่จะกล่าวถึงโปรโตคอลสายที่ใช้งานง่ายสำหรับการผสานรวมการส่งข้อความ ให้ความหมายที่สูงขึ้นที่ด้านบนของโปรโตคอล WebSockets และกำหนดประเภทเฟรมจำนวนหนึ่งที่แมปลงบนเฟรม WebSockets บางประเภทเหล่านี้คือ ...
WebSocketหมายถึงสถาปัตยกรรมการส่งข้อความ แต่ไม่ได้กำหนดให้ใช้โปรโตคอลการส่งข้อความใด ๆ เป็นเลเยอร์ที่บางมากบน TCP ที่เปลี่ยนสตรีมไบต์เป็นสตรีมข้อความ (ไม่ว่าจะเป็นข้อความหรือไบนารี) และไม่มากไปกว่านั้น ขึ้นอยู่กับแอพพลิเคชั่นในการแปลความหมายของข้อความ
ซึ่งแตกต่างจาก HTTP ซึ่งเป็นโปรโตคอลระดับแอปพลิเคชันในโปรโตคอล WebSocket มีเพียงข้อมูลไม่เพียงพอในข้อความขาเข้าสำหรับกรอบงานหรือคอนเทนเนอร์ที่จะทราบวิธีกำหนดเส้นทางหรือประมวลผล ดังนั้น WebSocket จึงอยู่ในระดับที่ต่ำเกินไปสำหรับทุกสิ่งยกเว้นแอปพลิเคชันที่ไม่สำคัญมาก สามารถทำได้ แต่จะนำไปสู่การสร้างกรอบด้านบน สิ่งนี้เปรียบได้กับการเขียนเว็บแอปพลิเคชันส่วนใหญ่ในปัจจุบันโดยใช้เว็บเฟรมเวิร์กแทนที่จะใช้ Servlet API เพียงอย่างเดียว
ด้วยเหตุนี้ WebSocket RFC จึงกำหนดการใช้โปรโตคอลย่อย ในระหว่างการจับมือกันไคลเอนต์และเซิร์ฟเวอร์สามารถใช้ส่วนหัว Sec-WebSocket-Protocol เพื่อยอมรับโปรโตคอลย่อยนั่นคือโปรโตคอลระดับแอปพลิเคชันที่สูงกว่าที่จะใช้ ไม่จำเป็นต้องใช้โปรโตคอลย่อย แต่แม้ว่าจะไม่ได้ใช้แอปพลิเคชันก็ยังคงต้องเลือกรูปแบบข้อความที่ทั้งไคลเอนต์และเซิร์ฟเวอร์สามารถเข้าใจได้ รูปแบบนั้นอาจเป็นแบบกำหนดเองเฉพาะเฟรมเวิร์คหรือโปรโตคอลการส่งข้อความมาตรฐาน
STOMP - โปรโตคอลการส่งข้อความที่เรียบง่ายซึ่งเดิมสร้างขึ้นเพื่อใช้ในภาษาสคริปต์พร้อมเฟรมที่ได้รับแรงบันดาลใจจาก HTTP STOMP ได้รับการสนับสนุนอย่างกว้างขวางและเหมาะอย่างยิ่งสำหรับการใช้งานผ่าน WebSocket และบนเว็บ
WebSocket API ช่วยให้เว็บแอปพลิเคชันสามารถจัดการการสื่อสารแบบสองทิศทางได้ในขณะที่ STOMP เป็นโปรโตคอลการส่งข้อความที่เน้นข้อความธรรมดา
โดยทั่วไปจะใช้โปรโตคอล STOMP ภายในเว็บซ็อกเก็ตเมื่อเว็บแอปต้องการรองรับการสื่อสารแบบสองทิศทางกับเว็บเซิร์ฟเวอร์
บทช่วยสอนที่ดีคือSTOMP Over WebSocketโดย Jeff Mesnill (2012)
นอกจากนี้ยังสามารถใช้ STOMP ได้โดยไม่ต้องใช้ websocket เช่นผ่านการเชื่อมต่อ Telnet หรือบริการนายหน้าข้อความ
และ Raw WebSockets สามารถใช้ได้โดยไม่ต้อง STOMP - เช่น ตัวอย่างเช่นในฤดูใบไม้ผลิ Boot + WebSocket โดยไม่ต้อง STOMP และ SockJs