Manual

Welcome to Live Stream Fleet Solution Manual

Example: Remote Web Server with TCP Transport

This configuration builds upon the Example: Video Transport example described in this documentation. In here, we are adding an additional data-channel between node-a and node-b to be able to fetch data from a web server that is located on site b.  










Prerequisites:

First, please make sure you have installed three lsfgateway nodes and that you have access to the LSF Manager web app, following the instructions in the Config Prerequisites page.

Also, the instructions in here are building upon the Video example, so it makes sense to do that step first. 


Edit the config for “node-a


In this example, node-a has an additional socket that is configured to behave as a server. 


  • Navigate to Administration Node Configuration.
  • Find node-a in the list and click the Edit button. It will open the node configurator page


Configure additional WebRTC Data Channels for TCP transport


Leave the Peer configuration as it is. We will not modify the Peer info in here. But we will add a new data channel for the Peer ID peer_node_a_b.









  • Datachannel ID: must be unique, “dc_tcp_http_a_b
  • Ordered:true’ to guarantee in-order delivery for TCP packets.
  • Max Packet Life: (used for unordered only) Maximum time to wait before dropping a late packet. Leave it as it is.
  • Max Retransmits: Maximum number of retransmission attempts before dropping a message. Use “1”.
  • Channel Input From: leave empty for now, we will configure it later.


Configure node-a, video input socket:

Click Add New Socket, and add the values below:





  • Socket ID: we need a unique label. We call it “socket_http
  • Type: our video feed is a TCP stream
  • Bind IP: This is the input IP and Port number that will forward the TCP requests to the remote site. So our configuration example is: “0.0.0.0:7070”  
  • Destination IP: used for output, leave it empty.
  • Blue input From: used for output, leave empty.
  • Red input From: used for output, leave empty.
  • Threshold: used for output, leave empty.
  • Hitless buffer: 0”. When we don’t have any hitless protection configured, its best to keep the buffer as small as possible to avoid latency.
  • Max In: this is a bandwidth limiter. Set it to the bandwidth size that you think is required. In this example we use 20Mbps


Configure input and output flows between socket and data-channel


Now we need to make sure that the data flows correctly between the new tcp socket and the new datachannel. To do that, edit the new socket_http and set its blue input to be dc_tcp_http_a_b channel.









And now edit the datachannel to change its input to the socket_http. 











The end-result should look like the screenshot below. Note the arrows connecting the new http socket to the new datachannel.











Make sure to save the file on the server by clicking on Save.


Edit the config for “node-b

node-b config is very similar to node-a with some very small differences on how to configure the TCP socket. 


Navigate to Administration Node Configuration.

Find node-b in the list and click the Edit button. It will open the node configurator page


Configure additional WebRTC Data Channels for TCP transport


Leave the Peer configuration as it is. We will not modify the Peer info in here. But we will add a new data channel for the Peer ID peer_node_a_b.


  • Datachannel ID: must be unique, “dc_tcp_http_a_b
  • Ordered:true’ to guarantee in-order delivery for TCP packets.
  • Max Packet Life: (used for unordered only) Maximum time to wait before dropping a late packet. Leave it as it is.
  • Max Retransmits: Maximum number of retransmission attempts before dropping a message. Use “1”.
  • Channel Input From: leave empty for now, we will configure it later.


Configure node-a, video input socket:

Click Add New Socket, and add the values below:

Socket ID: we need a unique label. We call it “socket_http

Type: our video feed is a TCP stream

Bind IP: leave empty

Destination IP: give it the IP address and port number of the HTTP Web Server that you want to access remotely. In this example, it is 127.0.0.1:80

Blue input From: used for output, leave empty.

Red input From: used for output, leave empty.

Threshold: used for output, leave empty.

Hitless buffer: 0”. When we don’t have any hitless protection configured, its best to keep the buffer as small as possible to avoid latency.

Max In: this is a bandwidth limiter. Set it to the bandwidth size that you think is required. In this example we use 20Mbps


Configure input and output flows between socket and data-channel


Now we need to make sure that the data flows correctly between the new tcp socket and the new datachannel. To do that, edit the new socket_http and set its blue input to be dc_tcp_http_a_b channel. And now edit the datachannel to change its input to the socket_http. 


Below is the full configuration of both the socket and the datachannel:

















The end-result should look like the screenshot below. Note the arrows connecting the new http socket to the new datachannel.








Make sure to save the file on the server by clicking on Save.


Start the lsfgateway nodes


At this stage, we are ready with creating the configuration for the nodes. Now it’s time to test the video flow. 


Make sure you have your Account ID and Secret Key that is required to start the lsfgateway nodes. If you don’t have them, you can create new ones.


  • Log in to LSF Manager.
  • Navigate to Administration Network Keys.
  • Click Add Account ID.












Start node-a






Start node-b






Start node-c






Check monitoring status of the nodes


To check status, do the following. 

  • Log in to LSF Manager.
  • Navigate to Monitoring Active Nodes.


If all nodes are active, you will see them in the LSFManager as shown in the screenshot below:














Select Monitor, to see node status. The WebRTC channels (in green), show the status of the peer connections. If the connections are up, you can see a small tick in front of each data-channel id as shown below.  


Test the remote http server


Make sure the HTTP server is running on the remote (where you have node-b). 


On the node-a side, open a web browser and brows to the local IP and port that you provided for the http socket such as below:












./lsfgateway --node_id node-a \

--account_id 8ab79469-5ddb-486b-9f7f-146864306b02 \

--secret_key e657f0e70d78c3bcecdb9670d434982c

./lsfgateway --node_id node-b \

--account_id 8ab79469-5ddb-486b-9f7f-146864306b02 \

--secret_key e657f0e70d78c3bcecdb9670d434982c

./lsfgateway --node_id node-c \

--account_id 8ab79469-5ddb-486b-9f7f-146864306b02 \

--secret_key e657f0e70d78c3bcecdb9670d434982c

© 2025 SOFTSIDE TECH PTY. LTD.