Sự khác biệt chính giữa giao thức WebSocket và STOMP là gì?
Sự khác biệt chính giữa giao thức WebSocket và STOMP là gì?
Câu trả lời:
Câu hỏi này tương tự như hỏi sự khác biệt giữa TCP và HTTP. Tôi vẫn sẽ cố gắng giải quyết câu hỏi của bạn, điều tự nhiên là bạn sẽ bị nhầm lẫn giữa hai thuật ngữ này nếu bạn đang bắt đầu.
Câu trả lời ngắn
STOMP có nguồn gốc từ WebSockets. STOMP chỉ đề cập đến một số cách cụ thể về cách các khung thông báo được trao đổi giữa máy khách và máy chủ bằng cách sử dụng WebSockets.
Câu trả lời dài
WebSockets
Nó là một đặc điểm kỹ thuật để cho phép giao tiếp hai chiều đồng bộ giữa máy khách và máy chủ. Mặc dù tương tự như TCP socket, nó là một giao thức hoạt động như một kết nối HTTP được nâng cấp, trao đổi các khung có độ dài thay đổi giữa hai bên, thay vì một luồng.
STOMP
Nó định nghĩa một giao thức cho các máy khách và máy chủ để giao tiếp với nhau bằng ngữ nghĩa nhắn tin. Nó không xác định bất kỳ chi tiết triển khai nào mà đề cập đến một giao thức dây dễ thực hiện để tích hợp nhắn tin. Nó cung cấp ngữ nghĩa cao hơn trên đầu giao thức WebSockets và xác định một số loại khung được ánh xạ vào khung WebSockets. Một số loại này là ...
WebSocket không bao hàm một kiến trúc nhắn tin nhưng không bắt buộc sử dụng bất kỳ giao thức nhắn tin cụ thể nào. Nó là một lớp rất mỏng trên TCP có chức năng chuyển đổi một luồng byte thành một luồng thông điệp (văn bản hoặc nhị phân) và không nhiều hơn thế. Nó phụ thuộc vào các ứng dụng để diễn giải ý nghĩa của một thông điệp.
Không giống như HTTP, là một giao thức cấp ứng dụng, trong giao thức WebSocket chỉ đơn giản là không có đủ thông tin trong một thông báo đến để một khung hoặc vùng chứa biết cách định tuyến hoặc xử lý nó. Do đó, WebSocket được cho là mức quá thấp đối với bất cứ thứ gì ngoại trừ một ứng dụng rất tầm thường. Nó có thể được thực hiện, nhưng nó có thể sẽ dẫn đến việc tạo ra một khuôn khổ trên đầu trang. Điều này có thể so sánh với cách hầu hết các ứng dụng web ngày nay được viết bằng cách sử dụng khung công tác web chứ không phải chỉ API Servlet.
Vì lý do này, WebSocket RFC xác định việc sử dụng các giao thức con. Trong quá trình bắt tay, máy khách và máy chủ có thể sử dụng tiêu đề Sec-WebSocket-Protocol để đồng ý về một giao thức con, tức là một giao thức cấp ứng dụng cao hơn để sử dụng. Việc sử dụng giao thức con là không bắt buộc, nhưng ngay cả khi không được sử dụng, các ứng dụng vẫn sẽ cần chọn một định dạng thông báo mà cả máy khách và máy chủ đều có thể hiểu được. Định dạng đó có thể là tùy chỉnh, khung cụ thể hoặc một giao thức nhắn tin tiêu chuẩn.
STOMP - một giao thức nhắn tin đơn giản được tạo ra ban đầu để sử dụng trong các ngôn ngữ kịch bản với các khung lấy cảm hứng từ HTTP. STOMP được hỗ trợ rộng rãi và rất thích hợp để sử dụng qua WebSocket và trên web.
API WebSocket cho phép các ứng dụng web xử lý truyền thông hai chiều trong khi STOMP là một giao thức nhắn tin định hướng văn bản đơn giản.
Giao thức STOMP thường được sử dụng bên trong ổ cắm web khi ứng dụng web cần hỗ trợ giao tiếp hai chiều với máy chủ web.
Một hướng dẫn hay là STOMP Over WebSocket của Jeff Mesnill (2012)
STOMP cũng có thể được sử dụng mà không có cổng kết nối web, ví dụ qua kết nối Telnet hoặc dịch vụ môi giới tin nhắn.
Và WebSockets thô có thể được sử dụng mà không cần STOMP - Ví dụ: Ví dụ về Spring Boot + WebSocket không có STOMP và SockJs .