Đây là những gì không gian tên và các phòng đều có chung (socket.io v0.9.8 - xin lưu ý rằng v1.0 tham gia viết lại hoàn toàn, vì vậy mọi thứ có thể đã thay đổi):
- Cả không gian tên (io.of('/nsp')) và các phòng (socket.join('room')) được tạo ra ở phía máy chủ
- nhiều không gian tên và nhiều phòng cổ phiếu cùng một kết nối (WebSocket)
- Máy chủ sẽ truyền tin nhắn qua dây chỉ cho những khách hàng đó kết nối với/tham gia vào một nsp/phòng, tức lànó không chỉ là client-side lọc
Các khác biệt:
- namespace được kết nối với các khách hàng sử dụng
io.connect(urlAndNsp)
(khách hàng sẽ được thêm vào namespace rằng chỉ khi nó đã tồn tại trên máy chủ)
- phòng chỉ có thể được nối ở phía máy chủ (mặc dù tạo API ở phía máy chủ để cho phép khách hàng tham gia là đơn giản)
- namespace có thể authorization protected
- ủy quyền là không có sẵn với phòng, nhưng cho phép tùy chỉnh có thể được bổ sung vào nói trên, dễ tạo API trên máy chủ, trong trường hợp một bị bẻ cong về việc sử dụng phòng
- phòng là một phần của một namespace (mặc định cho các không gian tên 'toàn cầu')
- namespace luôn bắt nguồn từ phạm vi toàn cầu
Để không nhầm lẫn khái niệm với tên (phòng hoặc không gian tên), tôi sẽ sử dụng ngăn để tham chiếu khái niệm và hai tên khác cho triển khai của khái niệm. Vì vậy, nếu bạn
- cần mỗi khoang uỷ quyền, không gian tên có thể là con đường dễ nhất để có
- nếu bạn muốn ngăn phân cấp lớp (2 lớp max), sử dụng một sự kết hợp không gian tên/phòng
- nếu ứng dụng phía máy khách của bạn bao gồm các phần khác nhau (không tự quan tâm đến các ngăn nhưng) cần được tách biệt với nhau, hãy sử dụng các không gian tên.
Ví dụ sau là ứng dụng khách lớn, trong đó các mô-đun khác nhau, có thể được phát triển riêng biệt (ví dụ: bên thứ ba), từng sử dụng socket.io độc lập, đang được sử dụng trong cùng một ứng dụng và muốn chia sẻ kết nối mạng đơn.
Không thực sự điểm chuẩn này, có vẻ như với tôi nếu bạn chỉ cần các ngăn đơn giản trong dự án của bạn để tách biệt và nhóm tin nhắn, một trong hai là tốt.
Bạn không chắc chắn nếu câu trả lời cho câu hỏi của bạn, nhưng nghiên cứu dẫn đến câu trả lời này ít nhất đã giúp tôi thấy rõ ràng hơn.
Nguồn
2012-08-01 02:56:10
Có điều gì quan trọng đã thay đổi sau phiên bản socket.io> = 1.0 không? – Xeroxoid
Thay đổi trong phiên bản trước, đọc http://socket.io/docs/rooms-and-namespaces/ và câu trả lời này có thể hữu ích để hiểu các phòng về mọi thứ http://stackoverflow.com/questions/24041220/sending-message -to-a-specific-id-in-socket-io-1-0/24224146 # 24224146 –
Chúng ta có thể nói không gian tên là một khu vực nhất định của ứng dụng web của tôi và phòng một nhóm khách hàng trong khu vực đó? – Onaiggac