2012-12-18 28 views
5

Tôi không thể không cảm thấy điều này phải được trả lời ở đâu đó, nhưng tôi thấy xấu hổ nếu tôi có thể tìm thấy nó. Một phần của vấn đề có thể là có quá nhiều cuộc thảo luận về phía khách hàng để tôi nhìn thấy gỗ cho cây cối.Thực hiện phía máy chủ Web Sockets cho NodeJS

Dù sao, xin lỗi sang một bên, đây là những gì tôi muốn làm. Tôi cần một nền tảng độc lập phía máy chủ thực hiện của WebSockets. Tôi muốn nó chạy trong NodeJS.

Hiện tại, 99% nội dung tôi đã tìm thấy về chủ đề này nói về socket.io. Nhưng cho đến nay tôi có thể nói, đó không phải là WebSockets, nó là một giao thức "bổ sung" đặc biệt theo đúng nghĩa của nó. Tôi cần cái gì đó hoạt động "theo tiêu chuẩn (chưa)". Có một lý do chính đáng cho điều đó, và nó không thể thương lượng, hãy tin tưởng tôi về điều đó và chúng ta hãy tiết kiệm băng thông :)

Vì vậy, tôi đã thử WebSocket, nhưng yêu cầu (hoặc xuất hiện yêu cầu cả trăn và, tệ hơn, hình ảnh Studio) để chạy trên Windows. Tôi cần một cái gì đó là nền tảng độc lập và không cần những thứ đặc biệt như thế này.

Tôi cũng đã thử nút-websocket-server, nhưng tôi không thể làm điều đó để làm việc cả. Ví dụ trên trang chính không thành công cho tôi. Có vẻ như chấp nhận một kết nối, nhưng khách hàng không nhìn thấy nó, không bên nào được gửi bất cứ điều gì, và khách hàng ngay lập tức nhìn thấy kết nối như đóng cửa. Thật vậy, tất cả những gì tôi từng nhận được là một "kết nối" gọi lại, và sau đó nó dường như chết. Chạy trong chế độ gỡ lỗi không cho tôi biết bất kỳ điều gì hữu ích, ngoại trừ một số lỗi nội bộ về một số đối tượng hoặc khác không có phương thức flush(). Tôi nửa nghi ngờ đây là một dự án không còn tồn tại?

Vì vậy, tôi hết ý tưởng. Có thể thuyết phục socket.io hoạt động hoàn toàn bằng thông số (không) cho WebSockets không? Có cách nào để có được node-websocket-server để hành xử mà tôi đã không tìm thấy. Có cách nào vòng phụ thuộc Visual Studio trong websocket, hoặc là có một số công cụ dựa trên NodeJS khác đáp ứng tất cả các yêu cầu của tôi?

Ồ, một điều nữa, tôi muốn công cụ cùng tồn tại một cách hòa bình với "kết nối" khi tôi đang sử dụng công cụ này để phân phối tài liệu thông thường của mình.

TIA, Toby

Trả lời

4

tôi đã có vấn đề chính xác tương tự mà bạn đang phải đối mặt vào lúc này khi tôi cố gắng sử dụng Socket.IO trên một nền tảng khác nhau mà không có một cổng trực tiếp của khách hàng (và không có động lực để tự mình chuyển nó).

tôi đã kết thúc chuyển mã của tôi để sử dụng ws mà là một WebSocket tiêu chuẩn dựa trên thực hiện cho nút mà không pha thêm đường từ socket.io.

Nó hoạt động rất tốt trong trường hợp của tôi trên các nền tảng khác nhau nhưng bạn sẽ cần phải làm lại hầu hết các mã kết nối/kết nối lại, vv

Website: link

GitHub: link

NPM: npm install ws

+0

OK, cảm ơn, tôi sẽ cung cấp cho một đi (xin lỗi vì sự chậm trễ thừa nhận, tôi đã ra khỏi thành phố). –

0

Socket.io sử dụng WS dưới vỏ để bạn có thể gặp vấn đề cài đặt tương tự trên Windows. Bạn có thể thấy rằng nó phàn nàn rằng bạn cần cài đặt Visual Studio 2010 cho thành phần ws để hoạt động.

Tuy nhiên, bạn có thể định cấu hình phiên bản Visual Studio được sử dụng bởi node-gyp chạy trình biên dịch C++ qua biến môi trường.

Ví dụ:

  • thiết GYP_MSVS_VERSION=2012 cho Visual Studio 2012
  • thiết GYP_MSVS_VERSION=2013e (chữ 'e' là viết tắt của 'thể hiện bản')

Để xem danh sách đầy đủ thấy - https://github.com/joyent/node/blob/v0.10.29/tools/gyp/pylib/gyp/MSVSVersion.py#L209-294

Điều này gây đau cho người dùng Windows của NodeJS vì nó giả định bạn có bản sao của Visual Studio insta lled mà nhiều người dùng không phải là người dùng cuối sẽ không bao giờ có. Vì vậy, tôi đang vận động Joyent để khuyến khích họ bao gồm các ổ cắm web như một phần của nút CORE và cũng gửi một trình biên dịch GNU gcc như một phần của NodeJS để chúng tôi có thể khắc phục vĩnh viễn vấn đề này và không buộc người dùng Windows phải điều chỉnh môi trường hoặc tải xuống bất kỳ thứ gì khác.

Hãy để thêm phiếu bầu của bạn tại địa chỉ:

LƯU Ý: Đội Joyent đã chỉ ra rằng socket.io sẽ quay lại sử dụng một thực hiện chậm hơn khi biên soạn ws thất bại. Nói cách khác, mã của bạn sẽ vẫn chạy - không nhanh như vậy. Điều này không rõ ràng đối với người dùng cuối thực hiện cài đặt bất kỳ ứng dụng nào phụ thuộc vào socket.io hoặc w khi nó hiển thị văn bản lỗi màu đỏ trong quá trình cài đặt khiến người dùng cho rằng cài đặt không thành công, khi thực tế nó sẽ hoạt động chậm.

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