web-dev-qa-db-fra.com

Meilleur Java framework pour les WebSockets côté serveur

Je veux créer un serveur simple ayant une faible charge. Le but est de permettre à quelques clients javascript d'accéder à certaines fonctionnalités implémentées dans Java via WebSockets. Je recherche la meilleure bibliothèque à utiliser pour cela - elle devrait être simple, robuste, etc. Maintenant, je considère 3 alternatives - jWebSocket - jetty - netty Quel est le meilleur ou peut-être autre chose?

Merci d'avance

29
boqapt

jWebSocket inclut désormais le moteur Jetty 8.0, y compris SSL et comprend de nombreux Nice-to-haves en plus. Il fournit aux clients compatibles multi-navigateurs et multiplateformes encore plus d'applications mobiles, par exemple sous Android, Symbian et BlackBerry. Le serveur peut facilement être étendu avec un plug-in et en inclut déjà beaucoup (par exemple pour l'authentification/l'autorisation, JDBC, SMTP, XMPP/Jabber, RPC, Twitter, le partage de fichiers, le chat, etc.). Il suffit de le vérifier ... http://jwebsocket.org . Dans l'attente de vos commentaires.

Cordialement Alex

13
user502448

J'irais avec des serveurs de servlet éprouvés Java: Jetty ou Resin. Les deux ont été étendus pour gérer les WebSockets:

Jetty WebSockets

WebSockets en résine

Mon choix personnel serait Jetty, car il est très simple à utiliser et je l'ai utilisé comme serveur intégré dans plusieurs projets.

Il y a aussi de nouveaux enfants sur le bloc comme Atmosphere et jWebSocket , mais pour les serveurs, je préfère opter pour une solution éprouvée. Jetty et Resin sont également des serveurs Servlet génériques, vous pouvez donc utiliser un seul produit pour tous vos besoins de service.

14
Peter Knego

PlayFramework! est l'autre très bonne option.

9

Pour info, l'atmosphère fonctionne sur la résine, le GlassFish et la jetée. L'atmosphère vous évite d'être coincé avec un serveur en vous offrant la portabilité Websocket parmi les serveurs Websocket. Il propose également une bibliothèque client qui peut être sélectionner le meilleur transport au cas où websocket n'est pas pris en charge par le navigateur. Vous ne pouvez donc pas comparer l'atmosphère avec Jetty ou Rsin

6
jfarcand

Jetez un oeil à Atmosphère . Voici un article sur le websocket et l'atmosphère.

5
Bozho

Bien que j'apprécie beaucoup les implémentations de JWebsockets et Autobahn, je préfère Atmosphere.

Ramp-Up :: Le temps de montée est faible. François Arcand met beaucoup d'efforts dans les tests et les exemples, aidant tout le monde à gagner rapidement. (Et je ne sais pas pourquoi il est capable de répondre si rapidement à toutes les questions architecturales que je soulève. Impressionnant.)

Perspective de maintenance :: Pour moi, la maintenabilité est fondamentale, si un logiciel va au-delà de la version majeure 1.0.0. Le projet est maintenu à un niveau supérieur Maven-POM avec une hiérarchie correctement construite. Il empêche l'incompatibilité des bibliothèques. Les bibliothèques sont des références au bon niveau. C'est bien fait.

Perspective technique/fonctionnelle :: Il offre une Java bibliothèque cliente SE (wasync) qui peut soit faire des communications natives websocket (onMessage) ou construire sur Jersey REST annotations (@Path). Par la suite, cela est aussi simple que possible avec l'avantage de maintenir une connexion ouverte pour les abonnements et les appels de procédure à distance populaires (RPC) ). Il s'agit d'une tentative courante de fusionner ces deux paradigmes. Voir aussi http://wamp.ws/ , qui se dirige vers la même approche. De plus, la bibliothèque propose d'établir des propriétés QoS comme la robustesse (par exemple dans le cas où un client se déconnecte) et la fiabilité (mise en cache des messages non livrés), ce qui est idéal pour les logiciels professionnels.

4
feder

J'ajouterais également vert.x à la liste. Il peut serveur Websockets et SockJS (émulation websocket lorsque le navigateur ne les prend pas en charge).

Mettre à jour:
Undertow http://undertow.io prend également en charge les Websockets.

3
Andrejs

Vous devriez peut-être essayer Bristleback Server ? En utilisant Bristleback, vous pouvez choisir parmi plusieurs moteurs WebSockets, comme Jetty, Netty et Tomcat. Vous pouvez avoir un serveur autonome ainsi qu'une application Web qui utilise WebSockets (Jetty et Tomcat 7). Bristleback utilise Spring Framework. Si vous avez travaillé avec des frameworks Web comme Struts, Stripes ou Play !, il vous sera très facile de commencer. Bien sûr, Bristleback possède sa propre bibliothèque client JavaScript pour un développement encore plus facile.

Divulgation complète: Je suis l'un des co-créateurs de Bristleback Server.

3
voitec

Pourquoi ne pas simplement écrire votre application sur un standard ouvert comme JMS et laisser les clients s'asseoir sur le bus JMS en tant que clients de messagerie? L'intérêt des websockets est d'apporter tout protocole natif TCP directement au client au lieu de le convertir de votre back-end en requête/réponse http.

Vos services principaux parleraient à un courtier JMS comme ActiveMQ, et vos clients parlent AMQP dans le navigateur via une API Javascript qui ressemble à l'API JMS en Java. Tout ce dont vous avez besoin pour cela est une passerelle websocket, par exemple Kaazing a une telle passerelle, tout ce qu'il fait, c'est acheminer votre trafic JMS TCP trafic vers les clients web via des websockets. Ils fournissent également un fan-out afin de ne pas surcharger votre bus JMS, c'est-à-dire que vous utilisez simplement une poignée de connexions au courtier pour décharger un million de connexions client de navigateur.

L'essentiel est que vous n'avez pas besoin de vous lier à une plate-forme spécifique. Respectez les normes, de cette façon, vous avez 100% de liberté pour échanger des composants à mesure que votre environnement change.

0
websocket

Suivez mon blog. Je serai prêt pour une sortie dans un futur proche. Le poids léger a été souligné tout au long du processus, mais il est également rapide. Je ne sais pas encore dans quelle mesure il augmentera à des charges plus élevées. Mais j'exécute la démo depuis un certain temps maintenant avec une charge relativement faible et ce que j'ai bien fonctionné. (Je testerai des charges plus lourdes plus tard et veillerai à ce qu'elles puissent être augmentées.)

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

0
Roger F. Gay

Si vous recherchez une infrastructure autour de la gestion des messages, du regroupement d'utilisateurs ("salles") et de la synchronisation des données ("variables partagées"), vous voudrez peut-être envisager Union Platform:

http://www.unionplatform.com

[Divulgation complète: je suis l'un des co-créateurs d'Union]

0
colin moock