J'ai passé un certain temps à trouver un simple client de Websocket Java qui pourrait fonctionner avec WSS et ne sera pas un désordre ... P>
J'ai essayé https://github.com/tootallnate/java-websocket < / p>
Ajout de la dépendance en tant que descirbes, copié le SSLClientexample.java pour le tester avec Webocket.org Echo Server, mais a obtenu une erreur de compilation à la ligne 84 de ce type de série () ... (coincé ici) P>
J'ai essayé Tyrus (semble-t-il que ceci est une grande bibliothèque développée directement par Oracle), mais il semble que j'ai besoin de faire fonctionner des appServer (conteneur WebSocket) pour pouvoir l'utiliser ... p>
Je me demande ce qui est si difficile à propos de WebSockets que l'on doit avoir Netty ou Glassfish ou grisly pour cela? p>
Je pense qu'il est possible de mettre en œuvre une utilisation de SSLENGINE (WSS) et PURE Java SDK ... Y a-t-il quelque chose que je ne sais pas sur les standards? (J'imagine beaucoup comme des prises ordinaires) p>
4 Réponses :
Tyrus client n'a pas besoin d'avoir un serveur d'applications! :) P>
Tyrus et blogpost Réduire la taille du pot client WebSocket avec ProGuard (vous pouvez obtenir jusqu'à 500 kB avec 7 + JDK). p>
A propos de la taille - il peut être réduit encore plus, mais avec un peu refactoring dans le code Tyrus. La comparaison de la prise WebSocket et simple ne sont pas très précis - socket ordinaire n'a pas besoin de mettre en œuvre HTTP et (traditionnellement) n'a pas eu le soutien NIO (fourni avec Java 7). Une autre partie est la mise en œuvre du protocole WebSocket, ce qui est pas si difficile, mais aussi son non seulement l'envoi d'octet [] au fil - il y a une poignée de main d'ouverture, des trames de signalisation et UTF-8 stricte obligatoire codage / décodage p>.
Je suppose que vous pourriez trouver de plus simple implémentation de l'API, mais coller à quelque chose qui est maintenu et fait partie de Java EE ne semble pas mal à moi - vous avez la possibilité de choisir la mise en œuvre (Tyrus est juste l'un d'eux, il y a d'autres) et votre client sera prêt à être inclus à l'application Java EE si cela arrivera jamais. (Note aux rédacteurs: Je travaille sur Tyrus, alors ma réponse est très probablement biaisée) p>.
J'aime Tyrus, après son entretenu par Oracle Guys, merci pour le lien, je vais vérifier, et essayer ... Si cela fonctionne, je vais poster ici ... Je n'ai besoin que de SMS supportant WSS Staminant Client, sans aucune jetée sans aucune jetée Netty ou des poissons :)))
Pavel, je peux vous voir développer beaucoup de choses, j'ai 2 problèmes maintenant, s'il vous plaît aider avec celles-ci si vous avez un certain temps. Cela fonctionne maintenant sans aucun appserver qui est ce que je suis naturellement attendu de celui-ci, mais je dois maintenant configurer le SSLContextConfigurateur, qui n'est pas dans mes dépendances (je n'ai que maintenant "Tyrus-Conter-JDK-Client" 1.10) ai-je besoin? 2. Je ne sais pas vraiment ce que sont KeyStore / Througstore et comment les créer pour un domaine particulier ... J'ai ajouté de nouveaux certificats SSL dans Java Cacerts, mais cela semble différent ... Où aurais-je pu lire à ce sujet ?
Vous n'avez pas besoin de définir SSLContextConfigurateur - si votre JDK est correctement configuré, il sera ramassé automatiquement. SSLContextConfigurateur est en org.glassfish.Tluus: module Tyrus-Client (veuillez utiliser la même version - 1.10 dans votre cas). Et vous pouvez également bénéficier d'un "paquet autonome tout-en-un": org.glassfish.TonRus.bundles: Tyrus-autonome-client-jdk; Search.maven .org / ... .
Pavel est-ce que je comprends ce droit. Je vais essayer de consommer WSS: //api.poloniex.com avec (WSS: //echo.webwebsocket.org) Cela fonctionne bien, mais avec Poloniex, il jette une exception SSLHANDSHAKE (plus d'informations nécessaires pour valider le certificat ... etc.) Maintenant, j'ai exporté le fichier .cer, l'importait dans New Mycerts Trustore et la passa en tant qu'argument JVM ... mais il trompette toujours une exception ... peut-être que vous savez ce que je fais mal? ne devrait pas ce travail? (Je pourrais peu chercher que je n'ai pas besoin de la tâche de KeyStore seulement de la confiance ... comme je prends l'API)
J'ai téléchargé le certificat depuis le navigateur lors de l'ouverture poloniex.com mais je ne sais pas si ce certificat s'applique également à WSS: //api.poloniex.com
Aussi Pavel j'ai lu que vous travaillez sur la version Java8, y a-t-il la version JDK Java8? ce serait parfait pour moi ...
J'ai vu "Tyrus-conteneur-inmemory" dans Maven Repos, mais je ne pouvais pas trouver d'informations à ce sujet dans votre blog ou dans le Guide de Tyrus ... J'espère que je n'habire pas avec tant de questions, sa semble-t-elle juste que ce sujet est couvert très mal Votre blog aide un peu mais vraiment ses bits d'information non structurés.
essayez à nouveau le client avec -djavax.net.debug = tout (voir
Client / serveur en mémoire ne vous aidera pas, cela n'accumule rien sur le réseau, c'est ce qu'il est tout ce qu'il est - le transport inamoratif, principalement utilisé pour les tests et l'évaluation de la performance.
et à propos de Java8 Version - Il n'y a actuellement que ceci: blogs.oracle.com/pavelbucek/entry/websocket_client_api_java_ 8 et cela ne fait pas encore partie d'une libération stable. Il devrait être quand Tyrus 1.11 est sorti, peut-être avec d'autres extensions.
J'ai changé de conteneur JDK à Grizzly et il a commencé à obtenir une erreur différente "org.glassfish.TonRus.core.handshakeException: le code de réponse n'était pas 101: 400." Aussi comment puis-je vous abonner à un flux une fois connecté?
Essayez la clientèle simple de Matthias. (Je suis juste un de ses adeptes à Twitter) Vous pouvez convenir à son intention sous-jacente de ce projet. P>
de https://github.com/matzew/simple-websocket-client p>
Le JSR 356 décrit une API standard pour Websket Server et Clients, mais l'API client est très complexe. Ce projet vise à offrir un client simplifié. P> blockQuote>
BTW, tout client WebSocket ne nécessite pas de serveur WebSocket et il est possible d'écrire votre propre client sur Pure Java SE. Cependant, étant donné que la facilité à intégrer avec d'autres technologies est beaucoup importante que la simple simplicité, vous pourriez avoir envie de dire que certains contextes sous-jacents sont complexes et inutiles. P>
Merci, pour le lien, mais aussi loin que je vois, cela ne prend pas en charge les connexions sécurisées WSS, ce dont j'ai besoin.
La taille de ci-dessous est un exemple "WSS". P> NV-WebSocket-Client-1.3.jar code> (publié sur 2015-05-06) est de 62 854 octets et ne nécessite aucune dépendance externe. P>
<dependency>
<groupId>com.neovisionaries</groupId>
<artifactId>nv-websocket-client</artifactId>
<version>1.3</version>
</dependency>
Je l'ajoute à titre de dépendance, mais semble que ce n'est pas dans un repo public, êtes-vous sûr qu'il n'y a pas de référentiel spécifique à ajouter? Aussi est .Connectez () un appel de blocage?
Vous pouvez le trouver dans le référentiel central Maven a>. Connect () Blocs de la méthode jusqu'à ce que WebSocket Ouverture de la poignée de main est terminée. Après une poignée de main réussie, deux threads internes sont démarrés et connectent () les retours de la méthode. L'envoi et la réception de cadres Websocket sont effectués de manière asynchrone. Voir Blog, Javadoc ou Readme.md pour plus de détails.
Je viens de l'essayer et cette bibliothèque de vôtre est brillante, merci un million!
Assurez-vous de recevoir la dernière version. Est actuellement allé beaucoup plus loin que 1.3 et la version actuelle est 2.9
Quelle est la difforme diff entre NV-Websocket-Client et Netty?
aller pour Java Websocket API, simple et élégant. P>