2010-10-23 35 views
28

Tôi muốn tạo máy chủ đơn giản có tải thấp. Mục tiêu là cung cấp cho một số khách hàng javascript quyền truy cập vào một số chức năng được triển khai trong Java thông qua WebSockets. Tôi tìm kiếm thư viện tốt nhất để sử dụng cho điều đó - nó phải đơn giản, mạnh mẽ, vv Bây giờ tôi xem xét 3 lựa chọn thay thế - jWebSocket - cầu cảng - netty Tốt nhất là gì? Hoặc có thể là cái gì khác?Khuôn khổ Java tốt nhất cho WebSockets phía máy chủ

Cảm ơn trước

+1

JEE7 hiện hỗ trợ Websocket. Xem câu trả lời SO [ở đây] (http://stackoverflow.com/a/18555847/1285418). –

Trả lời

13

jWebSocket hiện bao gồm công cụ Jetty 8.0 bao gồm SSL và bao gồm nhiều tính năng thú vị trên đầu trang của nó. Nó cung cấp cho khách hàng tương thích với nhiều trình duyệt và nhiều nền tảng thậm chí nhiều ứng dụng dành cho thiết bị di động hơn, ví dụ: dưới Android, Symbian và BlackBerry. Máy chủ có thể dễ dàng được mở rộng bằng trình cắm và đã bao gồm nhiều trình cắm (ví dụ: Xác thực/Tự động hóa, JDBC, SMTP, XMPP/Jabber, RPC, Twitter, Chia sẻ tệp, Trò chuyện, v.v.). Chỉ cần kiểm tra xem nó ra ... http://jwebsocket.org. Mong chờ phản hồi của bạn.

Trân Alex

+0

Tôi là người mới sử dụng Java web socket.I cần tạo các máy khách Java cần giao tiếp ngang hàng với một tên kênh, tôi muốn sử dụng Jweb socket, nhưng tôi không thể bắt đầu vì tôi không biết cách tạo máy chủ riêng của tôi có ổ cắm web trong đó. Tôi có nên tạo một servlet và làm cho nó như là một điểm kết thúc socket web không? hoặc là cách nào khác của họ? vui lòng chờ một câu trả lời @ user502448 –

14

Tôi muốn sử dụng các máy chủ Java servlet đã được chứng minh: Jetty hoặc Resin. Các có cả hai được mở rộng để xử lý WebSockets:

Jetty WebSockets

Resin WebSockets

sự lựa chọn cá nhân tôi sẽ Jetty, vì nó rất đơn giản để sử dụng và tôi đã sử dụng nó như là máy chủ nhúng trong một số dự án.

Ngoài ra còn có một số trẻ mới trên khối như AtmospherejWebSocket, nhưng đối với máy chủ tôi thích đi với một giải pháp đã được chứng minh. Jetty và Resin cũng là các máy chủ Servlet chung, vì vậy bạn có thể đi với một sản phẩm cho tất cả các nhu cầu phục vụ của bạn.

+1

Một tuỳ chọn khác: http://activemq.apache.org/websockets.html –

+0

Các tùy chọn này có thể được triển khai trên tomcat không? Tôi cần một thư viện chứa chéo. – Jus12

+3

@Peter Knego Các liên kết dành cho [Jetty WebSockets] (http://blogs.webtide.com/gregw/entry/jetty_websocket_server) và [Resin WebSockets] (http://caucho.com/resin-4.0/examples/websocket- java /) bạn đã cung cấp đang tạo _404 - trang không tìm thấy lỗi. – Visruth

6

FYI, Atmosphere chạy trên Resin, GlassFish và Jetty. Atmosphere giải phóng bạn khỏi bị mắc kẹt với một máy chủ bằng cách cho bạn khả năng chuyển đổi Websocket giữa máy chủ Websocket. Nó cũng cung cấp một thư viện khách hàng có thể chọn phương tiện giao thông tốt nhất trong trường hợp websocket không được trình duyệt hỗ trợ. Vì vậy, bạn không thể so sánh Bầu không khí với Cầu tàu hoặc Rsin

0

Theo dõi blog của tôi. Tôi sẽ sẵn sàng cho phát hành đôi khi trong tương lai không quá xa. Trọng lượng nhẹ đã được nhấn mạnh thông qua toàn bộ điều - nhưng nó cũng nhanh. Tôi không biết làm thế nào nó sẽ tăng lên đến tải cao hơn. Nhưng tôi đã chạy bản demo trong một thời gian với tải trọng tương đối thấp và những gì tôi đã làm việc tốt. (Tôi sẽ kiểm tra tải trọng nặng hơn sau đó và chắc chắn rằng nó có thể được đẩy mạnh.)

http://highlevellogic.blogspot.com/2011/09/websocket-server-demonstration_26.html

0

Nếu bạn đang tìm kiếm cơ sở hạ tầng xung quanh quản lý tin nhắn, sử dụng nhóm ("phòng"), và đồng bộ hóa dữ liệu ("biến chia sẻ"), bạn có thể muốn xem xét Liên Hệ điều hành:

http://www.unionplatform.com

[ Tiết lộ đầy đủ: Tôi là một trong những người đồng sáng tạo của Liên minh]

0

Tại sao bạn không viết ứng dụng của mình trên một chuẩn mở như JMS và cho phép khách hàng ngồi trên xe buýt JMS làm khách hàng tin nhắn? Toàn bộ điểm của websockets là mang bất kỳ giao thức TCP nguyên gốc nào trực tiếp tới máy khách thay vì chuyển đổi nó từ đầu sau của bạn thành http request/response.

Dịch vụ cuối của bạn sẽ nói chuyện với một nhà môi giới JMS như ActiveMQ và khách hàng của bạn nói AMQP trong trình duyệt thông qua API Javascript trông giống như API JMS trong Java. Tất cả những gì bạn cần là một cổng websocket, ví dụ như Kaazing có một gateway như vậy, tất cả những gì nó làm là định tuyến lưu lượng truy cập JMS TCP của bạn tới các máy khách web trên websockets. Chúng cũng cung cấp tính năng tắt tiếng để bạn không quá tải xe buýt JMS của mình, tức là bạn chỉ cần sử dụng một số kết nối với nhà môi giới để giảm tải một triệu kết nối máy khách trình duyệt.

Điểm mấu chốt là bạn không cần phải tự buộc mình vào bất kỳ nền tảng cụ thể nào. Gắn bó với các tiêu chuẩn, theo cách đó bạn có 100% tự do trao đổi các thành phần khi môi trường của bạn thay đổi.

3

Có thể bạn nên thử Bristleback Server? Sử dụng Bristleback, bạn có thể chọn từ một số công cụ WebSockets, như Jetty, Netty và Tomcat. Bạn có thể có máy chủ độc lập cũng như ứng dụng web sử dụng WebSockets (Jetty và Tomcat 7). Bristleback sử dụng Spring Framework. Nếu bạn đã làm việc với các khung công tác web như Struts, Stripes hoặc Play !, nó sẽ rất dễ dàng để bạn bắt đầu. Tất nhiên, Bristleback có thư viện máy khách JavaScript riêng để phát triển dễ dàng hơn.

Tiết lộ đầy đủ: Tôi là một trong những người đồng sáng tạo của Bristleback Server.

+3

Tôi nghĩ rằng việc tiết lộ đầy đủ là theo thứ tự – raam86

3

Tôi cũng sẽ thêm vert.x vào danh sách. Nó có thể máy chủ Websockets và SockJS (websocket thi đua khi trình duyệt không hỗ trợ chúng).

Cập nhật:
Cam kết http://undertow.io cũng hỗ trợ ổ cắm web.

4

Trong khi tôi đánh giá cao việc triển khai JWebsockets và Autobahn rất nhiều, tôi thích Atmosphere.

Đoạn đường nối :: Thời gian tăng thời gian lên thấp. Francois Arcand đặt rất nhiều nỗ lực vào thử nghiệm và ví dụ, giúp mọi người đạt được chiến thắng nhanh chóng. (Và tôi không có đầu mối tại sao anh ấy có thể đáp ứng một cách nhanh chóng với bất kỳ câu hỏi kiến ​​trúc tôi tăng lên. Impressive.)

Maintenance Perspective :: Đối với tôi, bảo trì là cơ bản, nếu một phần mềm vượt xa lớn phiên bản phát hành 1.0 .0. Dự án được duy trì ở mức Maven-POM hàng đầu với hệ thống phân cấp được xây dựng đúng cách. Nó ngăn không cho thư viện không tương thích. Thư viện được tham chiếu ở cấp độ chính xác. Điều đó được thực hiện tốt.

Kỹ thuật/chức năng Perspective :: Nó cung cấp một thư viện khách hàng Java SE (wasync) mà một trong hai có thể làm truyền thông WebSocket mẹ đẻ (onMessage) hoặc xây dựng trên Jersey REST của chú thích (@Path).Sau đó điều này làm cho nó đơn giản như nó được với lợi ích của việc duy trì một kết nối mở cho các thuê bao và các mô hình cuộc gọi thủ tục từ xa phổ biến (RPC). Đó là một nỗ lực chung để kết hợp hai mô hình đó. Xem thêm http://wamp.ws/, hướng đến phương pháp tương tự. Ngoài ra, thư viện cung cấp để thiết lập các đặc tính QoS như độ mạnh (ví dụ trong trường hợp khách hàng ngắt kết nối) và độ tin cậy (lưu trữ các tin nhắn chưa được gửi đi). Đó là điều tuyệt vời cho phần mềm chuyên nghiệp để khai thác.

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