2011-09-16 40 views
11

Tôi bắt đầu tìm kiếm vào nút và socket.io.socket.io trò chuyện với phòng riêng

Tôi đã tạo một ứng dụng trò chuyện đơn giản và tôi ngạc nhiên trước mức độ dễ dàng của nó.

Bây giờ, tôi muốn tiến xa hơn một chút và cung cấp danh sách người dùng trực tuyến có thể trò chuyện riêng tư với nhau.

Cách tốt nhất để tiếp cận điều này là gì?

Tôi đọc trên tính năng phòng mới của 0.7. Đó có phải là một cách để đi? Tự động tạo phòng mới mỗi lần 2 người dùng cần trò chuyện riêng tư? Nhưng làm thế nào người dùng thứ hai sẽ được thông báo về căn phòng mới được tạo ra, để anh ta có thể kết nối ở đó?

Tự xử lý tất cả các logic trên có tốt hơn không? Lưu trữ các phòng và phía máy chủ người dùng và lặp lại chúng mỗi lần và gửi tin nhắn cho những người thích hợp?

Cảm ơn

Trả lời

13

Nếu các chức năng duy nhất bạn muốn là cho hai người để có thể gửi tin nhắn cho nhau (chứ không phải nhóm người để có một phòng), sau đó logic có thể là một cái gì đó như thế này:

  1. Khi người dùng kết nối, lưu trữ kết nối của họ trong một đối tượng được khóa bằng tên người dùng của họ (hoặc trong bất kỳ cấu trúc dữ liệu nào khác để đảm bảo bạn có thể tìm thấy kết nối của người dùng cụ thể).
  2. Khi Bob muốn nói chuyện với Jeff, hãy gửi cho máy chủ sự kiện nêu rõ điều đó.
  3. Máy chủ tra cứu kết nối Socket.IO của Jeff trong đối tượng từ bước 1.
  4. Máy chủ sử dụng kết nối này để gửi cho Jeff (và chỉ Jeff) tin nhắn riêng tư.
+0

Phải. Cả hai đều đúng. Điều gì sẽ xảy ra nếu tôi muốn có các nhóm người – Thomas

+0

Hoặc sử dụng các tính năng tích hợp trong Socket.IO, hoặc cuộn của riêng bạn bằng cách nhóm các kết nối với nhau trong một số loại cấu trúc dữ liệu, và sau đó lặp qua tất cả các thành viên trong một phòng và gửi dữ liệu trong mỗi dữ liệu. –

+0

Tôi muốn sử dụng chức năng dựng sẵn, nhưng làm cách nào bạn có thể tự động tạo và hủy phòng? – Thomas

1

Hej Thomas

nếu theres chỉ có 2 người nói bạn không cần phải sử dụng xuất bản att tất cả chỉ cần gửi thông điệp rằng từ máy khách đến máy chủ và để cho các máy chủ xác định vị trí các khách hàng khác và gửi nó xuống .

+0

No. Không phải như vậy. Giả sử tôi có 100 người dùng và tức là Bob muốn nói chuyện với Jeff – Thomas

+1

đúng đó là quan điểm của tôi nếu bob muốn nói chuyện với jeff họ không cần có phòng riêng chỉ gửi trực tiếp cho jeff và phát ra "privateMsg" và nó sẽ chỉ đi đến jeff . – megakorre

Các vấn đề liên quan