I am trying to write a web client that connects to an API using HTTP. The API server is the Gephi software (https://gephi.org) with the "streaming plugin" which accepts commands to modify a graph in real-time. My goal is to visualize Internet traffic showing end-stations as nodes and connections as edges.
The API was not written by me and there is no way to change its behaviour. (There might be, but this is out of scope)
This API is somehow special since the HTTP connection stays open the whole time (even if it is idle).
So, my plan is to:
1. make a http connection to the server
2. send commands (POST) in JSON format using the established connection
3. wait for a reply which might take a while
4. send more commands
5. wait for replies
and so on.
Only steps 1. and 2. are fixed. There is no order in the following steps. Some commands expect a reply while others do not. Also it is possible to send hundreds of commands without waiting for reply.
I tried to build the web/api client using LWP and IO::Socket::INET, but the connection is closed at some point in time.
Basically it is possible to open/close the connection for every single command, but this limits the performance of the web/api client.
The API is described here:
Is it focused on Java but on the bottom there are examples of the command syntax.
Can you give me some hints how to continue?