WebSocket
WebSocket
HTTP là hỏi rồi đáp. WebSocket là một đường dây mở sẵn, hai bên nói lúc nào cũng được. Ba chặng, đi từ mở được kết nối tới giữ cho nó sống.
9 cột mốc · 2 có bài trong app
Bắt đầu
1Mở được một kết nối
Hiểu WebSocket khác một request bình thường ở chỗ nào.
- Handshakecó bàiVẫn bắt đầu bằng một request HTTP, rồi nâng cấp lên thành đường dây hai chiều.
- Gửi và nhậncó bàiKhông còn cặp hỏi-đáp: tin nhắn tới lúc nào thì xử lý lúc đó.
- Khi nào KHÔNG cần WebSockettự tìm hiểuDữ liệu vài phút mới đổi một lần thì một request định kỳ đơn giản hơn nhiều.
2Giữ cho đường dây sống
Kết nối sẽ đứt. Chuẩn bị sẵn cho lúc đó.
- Kết nối lạitự tìm hiểuWifi chập, máy ngủ, proxy cắt. Tự nối lại và thưa dần là việc bắt buộc, không phải tuỳ chọn.
- Heartbeattự tìm hiểuPing đều đặn để biết đường dây còn sống, thay vì tưởng là còn.
- Hàng đợi tin nhắntự tìm hiểuTin nhắn gửi lúc mất kết nối phải nằm chờ, không được bốc hơi.
3Nhiều người cùng lúc
Từ một kết nối lên tới nhiều nghìn kết nối.
- Phòng và kênhtự tìm hiểuGửi cho đúng nhóm người, không phát cho tất cả.
- Nhiều máy chủtự tìm hiểuHai người vào hai máy chủ khác nhau thì cần một chỗ trung gian để tin nhắn tới được nhau.
- Backpressuretự tìm hiểuBên nhận chậm hơn bên gửi thì tin nhắn dồn lại. Phải quyết định bỏ hay chờ.
Đích
Lộ trình dừng ở đây
Ba chặng trên đủ để làm chat, thông báo, hay bảng giá chạy thời gian thực. Phần dưới là hướng đi tiếp.
- SSEKhi chỉ cần một chiều từ máy chủ xuống — nhẹ hơn nhiều, có bài riêng trong app.
- CRDT · OTHai người sửa cùng một tài liệu cùng lúc mà không giẫm lên nhau.
- WebRTCNối thẳng hai trình duyệt với nhau, không qua máy chủ.