2012-03-19 6 views
6

Tôi không chắc chắn làm thế nào để sử dụng một cổng duy nhất ở phía máy chủ đồng thời cho nhiều ổ cắm. Làm thế nào chúng ta có thể làm điều đó trong node.js. Tôi hiện đang sử dụng socket.io và có một socket cho mỗi cổng. Trong trường hợp các giải pháp không tồn tại nhưng có thể sau đó cũng xin vui lòng cho đề xuất của bạn để đạt được như vậy. Ngoài ra những vấn đề có thể có nếu chúng ta chia sẻ một cổng? Điều gì có thể được các tùy chọn liên quan khác xem xét tình hình mà khách hàng có thể nhàn rỗi nhưng sẽ tiêu thụ một cổng trên máy chủ như chúng ta cần phải duy trì một kết nối ổ cắm cho mỗi khách hàng?nhiều ổ cắm chia sẻ một cổng trong node.js (qua socket.io)

Trả lời

5

Giả sử máy chủ của bạn đang chạy trên cổng 80, đây là những gì xảy ra bên dưới:

  1. server lắng nghe cổng 80.
  2. trạm Client1 kết nối với máy chủ cổng 80 từ cảng của nó 12345
  3. Server chấp nhận kết nối client1 của yêu cầu và giao cảng 9876 đến xã với khách hàng1.
  4. máy chủ tiếp tục lắng nghe cổng 80.

Vì vậy, bất chấp những gì bạn nghĩ, các cổng 80 không được tiêu thụ, đó là một người biết lắng nghe. Máy tính của bạn có thể có 50000 cổng miễn phí, vì vậy không có vấn đề gì.

FYI: Không thể chia sẻ cổng giữa các quy trình khác. Chỉ các quy trình con của Node mới có thể được chia sẻ, hãy xem nó có thể như thế nào: http://nodejs.org/docs/latest/api/cluster.html

+0

# 3 là không chính xác. Máy chủ (ít nhất là với HTTP) không phân bổ các cổng bổ sung để giao tiếp với máy khách. TCP cho phép nhiều kết nối tới một cổng (80) miễn là đầu kia của mỗi kết nối có một kết hợp IP và cổng (client1: 12345) duy nhất. – josh3736