Tôi đã phát triển một máy chủ trò chuyện bằng cách sử dụng websocket trong cao bồi, nhưng tôi muốn biết liệu tin nhắn được gửi bởi máy chủ đến thành công của khách hàng. Làm cách nào tôi có thể biết?Làm cách nào để biết thông báo được gửi bằng websocket thành công hay không
Trả lời
Websocket là một lớp trừu tượng khá mỏng trên đỉnh của ổ cắm TCP thông thường. Sau khi bắt tay ban đầu sự khác biệt là tối thiểu. Vì vậy, câu hỏi là: làm thế nào để tôi biết nếu một đoạn dữ liệu đã được nhận bởi các peer từ xa? Câu trả lời ngắn gọn: chỉ khi đồng nghiệp thừa nhận nó một cách rõ ràng bằng các phương thức của giao thức mức ứng dụng. Máy khách từ xa sẽ gửi các gói TCP ACK cho mọi gói dữ liệu bạn sẽ gửi, nhưng thực tế này cũng bị ẩn khỏi ứng dụng vì lý do chính đáng. Nhận gói ACK chỉ có nghĩa là ngăn xếp TCP từ xa đã xử lý nó, nhưng không nói gì về cách (và nếu) ứng dụng khách đã xử lý nó.
Thêm loại thông báo "xác nhận nhận" đặc biệt vào giao thức trò chuyện của bạn. Bao gồm số thứ tự tăng dần đơn điệu trong tất cả các thư gửi đi của bạn và bao gồm SN của thư đã nhận trong thư ACK để biết chính xác lượng dữ liệu mà khách hàng đã xử lý.
Bạn nên quay lại và chọn câu trả lời cho câu hỏi của mình – thedouglenz