web-dev-qa-db-fra.com

Linux Bash: Comment ouvrir une connexion websocket en tant que client

J'ai créé une application Node.JS fournissant un serveur de socket Web (à l'aide de npm ws ). Ce websocket attend qu'une connexion soit établie. Une fois qu'une connexion est établie sur le serveur, le websocket exécute un travail. Lorsque le travail est terminé, un message est envoyé sur le socket, puis le socket est en cours de fermeture. Cette prise fonctionne comme prévu; déjà testé avec un autre script Node.JS.

Comment puis-je me connecter au socket Web en utilisant uniquement les outils linux ligne de commande? J'ai déjà essayé curl comme décrit ici . Cependant, je ne peux pas savoir comment me connecter correctement à mon websocket qui tourne sur localhost: 8088/socket /

Edit: Ma question a été identifiée comme un doublon possible de une autre question. Cependant, la question liée demande seulement s'il existe un moyen de le faire avec curl. Je serais heureux de voir toute solution qui fonctionne sur bash. En outre, la réponse à la question liée est un fichier javascript utilisant autobahn.ws 

6
Brian

Essayez celui-ci à partir d’ici: Comment accéder au noeud final WebSocket?

$ curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: echo.websocket.org" -H "Origin: http://www.websocket.org" http://echo.websocket.org

Qu'il a d'ici: http://www.thenerdary.net/post/24889968081/debugging-websockets-with-curl

Pour citer le contenu de ce site pour l’avenir:

Ces drapeaux disent:

  1. Renvoyer les en-têtes dans la sortie
  2. Ne pas tamponner la réponse
  3. Définir un en-tête que cette connexion doit mettre à niveau de HTTP à autre chose
  4. Définir un en-tête que cette connexion doit mettre à niveau vers une connexion WebSocket
  5. Définir un en-tête pour définir l'hôte (requis par les normes WebSocket ultérieures)
  6. Définissez un en-tête pour définir l'origine de la demande (requis par les normes WebSocket ultérieures)

Si le websocket fonctionne, il devrait renvoyer ce qui suit:

$ curl -i -N -H "Connection: Upgrade" -H "Upgrade: websocket" -H "Host: echo.websocket.org" -H "Origin:http://www.websocket.org" http://echo.websocket.org
HTTP/1.1 101 Web Socket Protocol Handshake
Upgrade: WebSocket
Connection: Upgrade
WebSocket-Origin: http://www.websocket.org
WebSocket-Location: ws://echo.websocket.org/
Server: Kaazing Gateway
Date: Mon, 11 Jun 2012 16:34:46 GMT
Access-Control-Allow-Origin: http://www.websocket.org
Access-Control-Allow-Credentials: true
Access-Control-Allow-Headers: content-type
Access-Control-Allow-Headers: authorization
Access-Control-Allow-Headers: x-websocket-extensions
Access-Control-Allow-Headers: x-websocket-version
Access-Control-Allow-Headers: x-websocket-protocol
6
Stefan Rein

Mon outil websocat est spécialement conçu pour cela.

websocat ws://your_server/url

Vous pouvez vous connecter et échanger des données avec votre serveur. Par défaut, chaque ligne devient un message texte WebSocket et inversement.

Sous Linux, il est plus pratique de jouer avec readline:

rlwrap websocat ws://your_server/url.

Ce n'est pas le seul client Websocket de la CLI. Il existe également des projets "ws" et "wscat".

4
Vi.