WebSockets chắc chắn là tương lai.
Bỏ phiếu dài là một cách giải quyết bẩn để ngăn tạo kết nối cho mỗi yêu cầu như AJAX - nhưng bỏ phiếu dài đã được tạo khi WebSockets không tồn tại. Bây giờ do WebSockets, bỏ phiếu dài sẽ biến mất.
WebRTC cho phép giao tiếp ngang hàng.
Tôi khuyên bạn nên học WebSockets .
So sánh:
các kỹ thuật truyền thông khác nhau trên web
AJAX - request
→ response
. Tạo kết nối đến máy chủ, gửi các tiêu đề yêu cầu với dữ liệu tùy chọn, nhận phản hồi từ máy chủ và đóng kết nối.
Được hỗ trợ trong tất cả các trình duyệt chính.
Thăm dò ý kiến dài - request
→ wait
→ response
. Tạo kết nối đến máy chủ giống như AJAX, nhưng vẫn duy trì kết nối duy trì mở trong một thời gian (mặc dù không lâu). Trong khi kết nối, máy khách mở có thể nhận dữ liệu từ máy chủ. Máy khách phải kết nối lại định kỳ sau khi kết nối bị đóng, do hết thời gian hoặc eof dữ liệu. Về phía máy chủ, nó vẫn được xử lý như một yêu cầu HTTP, giống như AJAX, ngoại trừ câu trả lời theo yêu cầu sẽ xảy ra ngay bây giờ hoặc một lúc nào đó trong tương lai, được xác định bởi logic ứng dụng.
biểu đồ hỗ trợ (đầy đủ) | wikipedia
WebSockets - client
↔ server
. Tạo kết nối TCP đến máy chủ và giữ cho nó mở miễn là cần thiết. Máy chủ hoặc máy khách có thể dễ dàng đóng kết nối. Máy khách trải qua quá trình bắt tay tương thích HTTP. Nếu thành công, máy chủ và máy khách có thể trao đổi dữ liệu theo cả hai hướng bất cứ lúc nào. Sẽ hiệu quả nếu ứng dụng yêu cầu trao đổi dữ liệu thường xuyên theo cả hai cách. WebSockets có khung dữ liệu bao gồm mặt nạ cho mỗi tin nhắn được gửi từ máy khách đến máy chủ, vì vậy dữ liệu được mã hóa đơn giản.
biểu đồ hỗ trợ (rất tốt) | wikipedia
WebRTC - peer
↔ peer
. Vận chuyển để thiết lập giao tiếp giữa các máy khách và không liên quan đến vận chuyển, do đó, nó có thể sử dụng UDP, TCP hoặc các lớp trừu tượng hơn. Điều này thường được sử dụng để truyền dữ liệu âm lượng lớn, chẳng hạn như truyền phát video / âm thanh, trong đó độ tin cậy là thứ yếu và một vài khung hình hoặc giảm tiến trình chất lượng có thể được hy sinh theo thời gian đáp ứng và, ít nhất là, một số truyền dữ liệu. Cả hai bên (đồng nghiệp) có thể đẩy dữ liệu cho nhau một cách độc lập. Mặc dù nó có thể được sử dụng hoàn toàn độc lập với bất kỳ máy chủ tập trung nào, nhưng nó vẫn yêu cầu một số cách trao đổi dữ liệu endPoints, trong đó, trong hầu hết các trường hợp, các nhà phát triển vẫn sử dụng máy chủ tập trung để "liên kết" các đồng nghiệp. Điều này chỉ được yêu cầu để trao đổi dữ liệu cần thiết để thiết lập kết nối, sau đó không yêu cầu máy chủ tập trung.
biểu đồ hỗ trợ (trung bình) | wikipedia
Sự kiện gửi máy chủ - client
← server
. Khách hàng thiết lập kết nối liên tục và lâu dài với máy chủ. Chỉ có máy chủ có thể gửi dữ liệu cho khách hàng. Nếu khách hàng muốn gửi dữ liệu đến máy chủ, nó sẽ yêu cầu sử dụng công nghệ / giao thức khác để làm như vậy. Giao thức này tương thích HTTP và đơn giản để thực hiện trong hầu hết các nền tảng phía máy chủ. Đây là một giao thức thích hợp hơn được sử dụng thay vì Long Polling. biểu đồ hỗ trợ (tốt, ngoại trừ IE) | wikipedia
Ưu điểm:
Ưu điểm chính của phía máy chủ WebSockets , đó không phải là yêu cầu HTTP (sau khi bắt tay), mà là một giao thức truyền thông dựa trên thông điệp thích hợp. Điều này cho phép bạn đạt được lợi thế lớn về hiệu suất và kiến trúc . Ví dụ: trong node.js, bạn có thể chia sẻ cùng một bộ nhớ cho các kết nối ổ cắm khác nhau, để chúng có thể truy cập từng biến được chia sẻ. Do đó, bạn không cần sử dụng cơ sở dữ liệu làm điểm trao đổi ở giữa (như với AJAX hoặc Bỏ phiếu dài với một ngôn ngữ như PHP). Bạn có thể lưu trữ dữ liệu trong RAM hoặc thậm chí xuất bản lại giữa các ổ cắm ngay lập tức.
Cân nhắc về Bảo mật
Mọi người thường quan tâm đến tính bảo mật của WebSockets. Thực tế là nó tạo ra rất ít sự khác biệt hoặc thậm chí đặt WebSockets là lựa chọn tốt hơn. Trước hết, với AJAX, có cơ hội MITM cao hơn , vì mỗi yêu cầu là một kết nối TCP mới đang đi qua cơ sở hạ tầng internet. Với WebSockets, một khi được kết nối, việc chặn giữa chừng sẽ khó khăn hơn rất nhiều, với việc che dấu khung được thi hành bổ sung khi dữ liệu được truyền từ máy khách đến máy chủ cũng như nén thêm, đòi hỏi nhiều nỗ lực hơn để thăm dò dữ liệu. Tất cả các giao thức hiện đại đều hỗ trợ cả: HTTP và HTTPS (được mã hóa).
PS
Hãy nhớ rằng WebSockets thường có cách tiếp cận logic rất khác nhau để kết nối mạng , giống như các trò chơi thời gian thực có tất cả thời gian này và không giống như http.