[WebRTC Streaming Client 1.1.5] Entering IP:Port in Server Field Fails to Connect — Plain IP Works

Important: Isaac Sim support

Note: For Isaac Sim support, the community is gradually transitioning from this forum to the Isaac Sim GitHub repository so that questions and issues can be tracked, searched, and resolved more efficiently in one place. Whenever possible, please create a GitHub Discussion or Issue there instead of starting a new forum topic.

Note: For any Isaac Lab topics, please submit your topic to its GitHub repo ( GitHub - isaac-sim/IsaacLab: Unified framework for robot learning built on NVIDIA Isaac Sim · GitHub ) following the instructions provided on Isaac Lab’s Contributing Guidelines ( Contribution Guidelines — Isaac Lab Documentation ).

Please provide all relevant details below before submitting your post. This will help the community provide more accurate and timely assistance. After submitting, you can check the appropriate boxes. Remember, you can always edit your post later to include additional information if needed.

6.0.0
5.1.0
5.0.0
4.5.0
4.2.0
4.1.0
4.0.0
4.5.0
2023.1.1
2023.1.0-hotfix.1
Other (please specify):

Operating System

Ubuntu 24.04
Ubuntu 22.04
Ubuntu 20.04
Windows 11
Windows 10
Other (please specify):

GPU Information

  • Model: RTX PRO 6000
  • Driver Version: 580

Topic Description

Detailed Description

When launching the Isaac Sim WebRTC Streaming Client and entering a server address in the format <ip>:<port> (e.g., 127.0.0.1:49100) in the Server input field, the client fails to establish a connection. If the port is omitted and only the IP address is entered (e.g., 127.0.0.1), the connection succeeds.

Steps to Reproduce

  1. Start Isaac Sim with WebRTC streaming enabled (signaling port 49100).

  2. Launch the WebRTC Streaming Client.

  3. In the Server field, type 127.0.0.1:49100 (IP with explicit port).

  4. Click Connect.

  5. Observe that the connection fails — no stream appears and the client times out or reports an error.

(Add more steps as needed)

Error Messages

(If applicable, copy and paste any error messages you received)

Screenshots or Videos

(If applicable, add screenshots or links to videos that demonstrate the issue)

Additional Information

What I’ve Tried

Using Wireshark, I captured and compared two WebRTC connection cases:

When only the Server IP was entered, the client successfully established the initial TCP connection, sent an HTTP WebSocket upgrade request, and received HTTP/1.1 101 Switching Protocols. After that, the WebRTC flow continued with signaling, STUN/ICE checks, DTLS negotiation, and media-related UDP packets.

When the Server IP plus port 49100 was manually entered, the client still connected to the server TCP port, but instead of sending a normal HTTP WebSocket request, it sent a TLS Client Hello. The server then responded with HTTP/1.1 400 Bad Request, and the connection was closed.

Therefore, the manually specified Server IP:49100 case failed before the basic WebRTC handshaking could complete. The issue appears to be a signaling protocol mismatch: the server expects plain HTTP/WebSocket on port 49100, but the client attempts to use a TLS/WSS-style connection.

Related Issues

(If you’re aware of any related issues or forum posts, please link them here)

Additional Context

(Add any other context about the problem here)

Hi @hsiao.johnny,

Thanks for the detailed Wireshark analysis – it clearly pinpoints the issue.

The Server field in the WebRTC Streaming Client (v1.1.5) only accepts a plain IP address (e.g. 127.0.0.1). It does not support the IP:port format. The signaling port (TCP 49100) and media port (UDP 47998) are hardcoded in the client.

Your Wireshark capture confirms this: when you enter 127.0.0.1:49100, the client’s URL parser misinterprets the input and sends a TLS Client Hello (wss://) instead of a plain HTTP WebSocket upgrade (ws://), causing the server to respond with 400 Bad Request.

Workaround: Enter only the IP address in the Server field (e.g. 127.0.0.1 or <remote-ip>). The client will automatically connect to port 49100.

If you need to use a non-default port (e.g. for multiple Isaac Sim instances on one host), you can use SSH port forwarding to tunnel your local 49100 to the remote instance’s port:

ssh -N -f -L 49100:127.0.0.1:<REMOTE_PORT> <USER>@<SERVER_IP>                                                                                                                                                                                                                          

Then connect to 127.0.0.1 in the client.

Isaac Sim 6.0 update: The server-side streaming ports are now configurable via --/exts/omni.kit.livestream.app/primaryStream/signalPort=. However, the client still needs to target the configured port, so the SSH tunnel approach remains useful for multi-instance setups on
5.1.

Related discussions:

Note that although port number is not supported on the current version of WebRTC Streaming Client (v1.1.5.), it will be supported starting on v2.0.0.