Bài viết hôm nay chúng ta cùng nhau tìm hiểu một số kỹ thuật giao tiếp phổ biến trong môi trường Web nhé.
1. HTTP
HTTP – HyperText Transfer Protocol Giao thức truyền tải siêu văn bản là một trong những giao thức chuẩn được dùng để liên hệ thông tin giữa Web Server và Web Client. HTTP là một giao thức ứng dụng của bộ giao thức TCP/IP.
HTTP hoạt động dựa trên mô hình Client – Server, client gửi yêu cầu (request) đến server và nhận được về phản hồi (response). HTTP là một stateless protocol. Hay nói cách khác, request hiện tại không biết những gì đã hoàn thành trong request trước đó.
2. Polling/ Long Polling
Hạn chế của HTTP là việc chỉ cho phép kết nối từ 1 chiều, tức là buộc client phải gửi request thì server mới thực hiện việc trả về response. Điều này khiến cho việc xây dựng các ứng dụng Web cần sự trao đổi 2 chiều hoàn toàn (server khi cần thì có thể gửi thông tin sang cho client) trở nên khó khăn. Phương pháp polling đưa ra một mô phỏng kết nối 2 chiều để giải quyết vấn đề trên trong đó cứ sau 1 khoảng thời gian cố định client lại đưa ra yêu cầu tới server để xem liệu có bất kỳ thông tin nào có sẵn hay không.
Tính năng Polling hoạt động tốt với trường hợp chúng ta biết trước chính xác khoảng thời gian mà server sẽ trả về cho dữ liệu mới cần thiết. Mặc dù vậy nó làm phát sinh ra rất nhiều các request/ response không cần thiết. Một cải tiến trong phương pháp này là Long Polling (còn được gọi là Comet) khi client gửi request và giữ nó trong 1 khoảng thời gian nhất định; trong thời gian đó nếu server có dữ liệu để trả về thì sẽ phản hồi response và đóng kết nối; nếu quá thời gian trên thì kết nối cũng tự động được ngắt.
3. WebSocket
Nếu như HTTP cung cấp cho chúng ta một kết nối 1 chiều (dạng client-server) thì WebSocket đưa ra một giao thức truyền thông cung cấp các kênh kết nối song công – điều này có nghĩa không phân chia client hay server mà mọi điểm trong kết nối đều có thể giao tiếp được với nhau theo cả 2 hướng.
Giao thức WebSocket không chạy trên HTTP, thay vào đó nó thực hiện trên giao thức TCP. WebSocket sẽ phù hợp cho việc xây dựng các ứng dụng thời gian thực (realtime) như nhắn tin; gói tin của WebSockets nhẹ hơn HTTP rất nhiều, giảm độ trễ của network và không cần phải gửi request liên tiếp như HTTP.
4. Server Sent Events (SSEs)
SSEs khá giống với Long Polling khi mà request của client gửi lên sẽ được giữ trong một khoảng thời gian nhất định không bị timeout; điểm khác là trong khoảng thời gian đó thì server sẽ là bên liên tục gửi các response data.
Cơ chế này có ý nghĩa với các bài toán mà cần server trả về liên tục dữ liệu trong 1 khoảng thời gian; chẳng hạn như các hệ thống định vị GPS có chức năng cập nhật lộ trình, vị trí theo thời gian thưc; lúc này request chỉ cần gửi lên 1 lần và server sẽ liên tục trả về tọa độ hiện tại của đối tượng cần theo dõi.