Apa perbedaan antara WebSocket dan protokol STOMP?

96

Apa perbedaan utama antara WebSocket dan protokol STOMP?

LancerSung
sumber

Jawaban:

91

Pertanyaan ini mirip dengan menanyakan perbedaan antara TCP dan HTTP. Saya masih akan mencoba menjawab pertanyaan Anda, wajar jika Anda bingung antara kedua istilah ini jika Anda baru memulai.

Jawaban singkat

STOMP diturunkan di atas WebSockets. STOMP hanya menyebutkan beberapa cara spesifik tentang bagaimana frame pesan dipertukarkan antara klien dan server menggunakan WebSockets.


Jawaban panjang

WebSockets

Ini adalah spesifikasi untuk memungkinkan komunikasi dua arah sinkron antara klien dan server. Meskipun mirip dengan soket TCP, ini adalah protokol yang beroperasi sebagai koneksi HTTP yang ditingkatkan, bertukar bingkai dengan panjang variabel antara dua pihak, alih-alih aliran.

MENGINJAK

Ini mendefinisikan protokol untuk klien dan server untuk berkomunikasi dengan semantik perpesanan. Ini tidak mendefinisikan detail implementasi apa pun, melainkan membahas protokol kawat yang mudah diterapkan untuk integrasi pesan. Ini menyediakan semantik yang lebih tinggi di atas protokol WebSockets dan mendefinisikan beberapa jenis bingkai yang dipetakan ke bingkai WebSockets. Beberapa dari jenis ini adalah ...

  • Menghubung
  • langganan
  • berhenti berlangganan
  • kirim (pesan dikirim ke server)
  • pesan (untuk pesan yang dikirim dari server) BEGIN, COMMIT, ROLLBACK (manajemen transaksi)
Nitin Kamate
sumber
maksud Anda Asynchronous?
Anatolii Stepaniuk
25

WebSocket tidak menyiratkan arsitektur perpesanan tetapi tidak mengamanatkan penggunaan protokol perpesanan tertentu. Ini adalah lapisan yang sangat tipis di atas TCP yang mengubah aliran byte menjadi aliran pesan (baik teks atau biner) dan tidak lebih. Terserah aplikasi untuk menafsirkan makna pesan.

Tidak seperti HTTP, yang merupakan protokol tingkat aplikasi, dalam protokol WebSocket tidak ada cukup informasi dalam pesan masuk untuk kerangka kerja atau wadah untuk mengetahui cara merutekan atau memprosesnya. Oleh karena itu WebSocket bisa dibilang level yang terlalu rendah untuk apa pun kecuali aplikasi yang sangat sepele. Ini bisa dilakukan, tetapi kemungkinan besar akan mengarah pada pembuatan kerangka kerja di atas. Ini sebanding dengan bagaimana sebagian besar aplikasi web saat ini ditulis menggunakan kerangka kerja web daripada API Servlet saja.

Untuk alasan ini, WebSocket RFC mendefinisikan penggunaan sub-protokol. Selama jabat tangan, klien dan server dapat menggunakan header Sec-WebSocket-Protocol untuk menyetujui sub-protokol, yaitu protokol tingkat aplikasi yang lebih tinggi untuk digunakan. Penggunaan sub-protokol tidak diperlukan, tetapi meskipun tidak digunakan, aplikasi masih perlu memilih format pesan yang dapat dipahami oleh klien dan server. Format itu bisa custom, framework-specific, atau protokol perpesanan standar.

STOMP  - protokol perpesanan sederhana yang awalnya dibuat untuk digunakan dalam bahasa skrip dengan bingkai yang terinspirasi oleh HTTP. STOMP didukung secara luas dan cocok untuk digunakan melalui WebSocket dan web.

Anna Klein
sumber
13

API WebSocket memungkinkan aplikasi web untuk menangani komunikasi dua arah sedangkan STOMP adalah protokol perpesanan berorientasi teks sederhana.

Protokol STOMP biasanya digunakan di dalam soket web ketika aplikasi web perlu mendukung komunikasi dua arah dengan server web.

Tutorial yang bagus adalah STOMP Over WebSocket oleh Jeff Mesnill (2012)

STOMP juga dapat digunakan tanpa websocket, misalnya melalui koneksi Telnet atau layanan perantara pesan.

Dan Raw WebSockets dapat digunakan tanpa STOMP - Mis. Contoh Spring Boot + WebSocket tanpa STOMP dan SockJs .

intotecho
sumber