Nếu bạn có yêu cầu phức tạp được thiết lập với nhiều người dùng (& máy chủ) cơ sở hạ tầng websocket của bạn (máy chủ) sẽ mở rộng như thế nào, đặc biệt là khi phát sóng?Khả năng mở rộng Websocket, mối quan tâm phát sóng
Tất nhiên, phát sóng không phải là một phần của bất kỳ thông số kỹ thuật websocket nào nhưng nó có ngay cả trong các ví dụ trò chuyện cơ bản (a.k.a. hello world for websocket).
Giải pháp phía khách hàng (yêu cầu dữ liệu mới) vẫn có khả năng mở rộng hơn giải pháp phía máy chủ (phát sóng) với độ trễ thấp của websockets và tính chất tương đối rẻ (http headerless).
Edit:
OK, chỉ cần nghĩ rằng bạn muốn thay thế tất cả các mã ajax của bạn với việc triển khai WebSocket trong đó có thể có nghĩa là rất nhiều kết nối trong rất nhiều hoàn cảnh khác nhau. Điều này cho biết thêm phức tạp rất lớn cho hệ thống của bạn nếu bạn muốn theo dõi mọi tình huống có thể phát sóng.
Đề xuất cấp thấp (mạng/luồng vv) cũng là một phần của vấn đề không phải giải pháp, vì điều này có nghĩa là bạn phải mã hóa một máy chủ đặc biệt không giống như các máy chủ http chung.
Hơn nữa, phát sóng mang đến một số loại trạng thái có tính chất nhà nước cho bảng không thể dễ dàng mở rộng. Hãy suy nghĩ về việc thêm nhiều máy chủ hơn và cân bằng tải.
IMHO, "Biết ai là tất cả khách hàng" không dễ dàng trong việc phát triển websocket phía máy chủ. Bạn phải theo dõi tất cả mọi người trong ngữ cảnh của họ một cách hiệu quả và cũng có nhiều hơn một máy chủ làm cho nó phức tạp hơn. IMO, yêu cầu dữ liệu mới có thể mở rộng hơn vì triển khai máy chủ của bạn không phải biết về khách hàng để bạn có thể dễ dàng thêm máy chủ mới. Và một lần nữa, nó không thực sự lãng phí băng thông nếu bạn giữ nó nhỏ và bạn có thể với http webless headersocket. –
Không có vấn đề gì bạn làm, máy chủ phải biết về khách hàng bởi vì bạn phải giữ một danh sách các ổ cắm mở. Nếu không có danh sách các ổ cắm mở, bạn sẽ không thể nghe dữ liệu đến từ chúng (ví dụ: bạn sẽ không biết danh sách các bộ mô tả tệp nào chuyển cho các hàm 'select' hoặc' epoll'). Bạn cũng cần phải theo dõi một bộ đệm cho dữ liệu đến và đi tôi nghĩ. Bạn không thể quên các kết nối TCP/IP đang mở. Vì bạn vẫn theo dõi danh sách đó, nên không quá khó để thêm một số dữ liệu nhận dạng của riêng bạn vào danh sách đó, nếu cần. –
Bạn gần như đang trộn các khái niệm về phiên và ổ cắm; đầu tiên là cấp ứng dụng và cấp thứ hai là cấp độ mạng như bạn biết. Trong thực tế bạn không muốn đi sâu, không phải tôi. IMHO, tốt hơn là nghĩ vấn đề này ở cấp ứng dụng. –