vi / websocat

Command-line client for WebSockets, like netcat (or curl) for ws:// with advanced socat-like functions
MIT License
7.01k stars 272 forks source link

How to fetch a stream and send API Key? #187

Open omnipresent07 opened 1 year ago

omnipresent07 commented 1 year ago

I am trying to access https://aisstream.io/ through websocat but having issues. I have the API Key. This is what I see:

➜  ~ websocat wss://stream.aisstream.io/v0/stream
{"ApiKey":"<my key>","BoundingBoxes":[[-90,-180],[90,180]]]}
websocat: WebSocketError: I/O failure
websocat: error running

What am I doing wrong? Is there a way I can test that endpoint through this CLI?

vi commented 1 year ago

There is a typo in the opening JSON query. You have missed one of the opening square brackets.

{"ApiKey":"...","BoundingBoxes": [ [[-90,-180],[90,180]]]}

For me receiving stream from Websocat works:

$ /opt/websocat  -v  wss://stream.aisstream.io/v0/stream
[INFO  websocat::lints] Auto-inserting the line mode
[INFO  websocat::stdio_threaded_peer] get_stdio_peer (threaded)
[INFO  websocat::ws_client_peer] get_ws_client_peer
[INFO  websocat::ws_client_peer] Connected to ws
{"APIKey":"xxxxxxxxx","BoundingBoxes":[[[-90,-180],[90,180]]]}

{"Message":{"PositionReport":{"Cog":169.6,"CommunicationState":59916,"Latitude":57.37234333333333,"Longitude":16.556225,"MessageID":1,"NavigationalStatus":0,"PositionAccuracy":true,"Raim":false,"RateOfTurn":0,"RepeatIndicator":0,"Sog":0,"Spare":0,"SpecialManoeuvreIndicator":0,"Timestamp":7,"TrueHeading":237,"UserID":265518880,"Valid":true}},"MessageType":"PositionReport","MetaData":{"MMSI":265518880,"ShipName":"RESCUE BURRE        ","latitude":57.37234333333333,"longitude":16.556225,"time_utc":"2023-06-02 21:18:06.571796395 +0000 UTC"}}
{"Message":{"StaticDataReport":{"MessageID":24,"PartNumber":true,"RepeatIndicator":0,"ReportA":{"Name":"","Valid":false},"ReportB":{"CallSign":"","Dimension":{"A":9,"B":7,"C":3,"D":3},"FixType":1,"ShipType":37,"Spare":0,"Valid":true,"VenderIDModel":1,"VenderIDSerial":5,"VendorIDName":"GRM"},"Reserved":0,"UserID":338051706,"Valid":true}},"MessageType":"StaticDataReport","MetaData":{"MMSI":338051706,"ShipName":"","latitude":25.731025,"longitude":-80.22980833333332,"time_utc":"2023-06-02 21:18:06.572271422 +0000 UTC"}}
{"Message":{"StandardClassBPositionReport":{"AssignedMode":false,"ClassBBand":true,"ClassBDisplay":false,"ClassBDsc":true,"ClassBMsg22":true,"ClassBUnit":true,"Cog":337.7,"CommunicationState":393222,"CommunicationStateIsItdma":true,"Latitude":25.739915,"Longitude":-80.16492166666667,"MessageID":18,"PositionAccuracy":true,"Raim":true,"RepeatIndicator":0,"Sog":0,"Spare1":0,"Spare2":0,"Timestamp":6,"TrueHeading":511,"UserID":378112381,"Valid":true}},"MessageType":"StandardClassBPositionReport","MetaData":{"MMSI":378112381,"ShipName":"OBSESSION","latitude":25.739915,"longitude":-80.16492166666667,"time_utc":"2023-06-02 21:18:06.572688109 +0000 UTC"}}
...

I also received {"error": "Subscription Object Is Malformed"} message from the service which suggested the mistake. Was is not the case for you? You are also recommended to use -v option when debugging Websocat issues to see when it connects and when disconnects from the socket.