Skip to main content

Testing with Room Manager

How-to Guide - Use Room Manager to test your Fishjam integration quickly without a backend

Room Manager is a development tool that lets you create rooms and peers for testing without setting up your own backend server. This guide shows you how to use it effectively.

Prerequisites

Step 1: Get your Room Manager URL

  1. Log in to Fishjam Dashboard
  2. Navigate to your Sandbox App
  3. Copy your Room Manager URL - it will look like:
    https://fishjam.io/api/v1/connect/YOUR_APP_UUID/room-manager
note

YOUR_APP_UUID is your unique sandbox identifier. Anyone who knows this ID can join your rooms, so keep it secure during development.

Step 2: Create a room and get peer tokens

Using HTTP GET requests

The Room Manager API uses simple GET requests. Add query parameters to create rooms and peers:

https://fishjam.io/api/v1/connect/${YOUR_APP_UUID}/room-manager?roomName=foo&peerName=bar&roomType=conference

Required parameters:

  • roomName - Name of the room to create/join
  • peerName - Name for the peer joining the room

Optional parameters:

  • roomType - Type of room to create (defaults to conference)

Room types available:

  • conference - For video/audio conferencing (default)
  • audio-only - For audio-only conferencing
  • livestream - For one-to-many video/audio streaming

Step 3: Handle the response

The Room Manager returns a JSON response with connection details:

{ "peerToken": "<PEER_TOKEN>", "url": "wss://fishjam.io/api/v1/connect/${YOUR_APP_UUID}", "room": { "id": "<ROOM_ID>", "name": "foo" }, "peer": { "id": "<PEER_ID>", "name": "bar" } }

Step 4: Use the tokens in your client app

Below are examples on how to use the tokens from room manager in your frontend applications:

export default function TestScreen() { const [roomData, setRoomData] = useState<{ url: string; peerToken: string; } | null>(null); useEffect(() => { const fetchRoomData = async () => { try { const response = await fetch( `https://fishjam.io/api/v1/connect/${YOUR_APP_UUID}/room-manager?roomName=${roomName}&peerName=${peerName}&roomType=conference`, ); const data = await response.json(); setRoomData(data); } catch (error) { console.error("Failed to create room:", error); } }; fetchRoomData(); }, []); if (!roomData) { return <Text>Creating room...</Text>; } return ( <FishjamRoom fishjamUrl={roomData.url} peerToken={roomData.peerToken} /> ); }

Step 5: Test different room types

Testing audio-only rooms:

const audioOnlyUrl = `https://fishjam.io/api/v1/connect/${YOUR_APP_UUID}/room-manager?roomName=audioTest&peerName=user1&roomType=audio-only`;

Testing livestream rooms:

// For the streamer const streamerUrl = `https://fishjam.io/api/v1/connect/${YOUR_APP_UUID}/room-manager?roomName=liveStream&peerName=streamer&roomType=livestream`; // For viewers, you need a viewer token (different endpoint) const viewerTokenUrl = `https://fishjam.io/api/v1/connect/${YOUR_APP_UUID}/room-manager/liveStream/livestream-viewer-token`;

Step 6: Handle multiple peers

To test with multiple participants, create multiple peer tokens with different peer names:

// First peer const peer1Response = await fetch( `https://fishjam.io/api/v1/connect/${YOUR_APP_UUID}/room-manager?roomName=multiTest&peerName=alice`, ); // Second peer const peer2Response = await fetch( `https://fishjam.io/api/v1/connect/${YOUR_APP_UUID}/room-manager?roomName=multiTest&peerName=bob`, );

Both peers will join the same room (multiTest) and can communicate with each other.

Common testing patterns

Pattern 1: Random room names for isolation

const roomName = `test_${Math.random().toString(36).substring(7)}`; const peerName = `user_${Date.now()}`;

Pattern 2: Consistent naming for repeated tests

const roomName = "development-room"; const peerName = `developer_1`;

Pattern 3: Feature-specific room names

const roomName = `screenshare-test-${Date.now()}`; const roomName = `audio-only-test`; const roomName = `livestream-demo`;

Troubleshooting

Issue: Room not found errors

Problem: Rooms might not persist between requests.

Solution: Always create rooms fresh for each test session.

Issue: Connection failures

Problem: Invalid app UUID or network issues.

Solution:

  1. Verify your app UUID in the Fishjam Dashboard
  2. Check network connectivity
  3. Ensure you're using the sandbox environment

Security reminder

danger

Room Manager is not safe for production!

  • No authentication required
  • Anyone with your app UUID can join rooms
  • Identical room/peer names get the same tokens
  • No rate limiting or abuse protection

Only use Room Manager for development and testing.

Resetting your app

If you need to reset your Room Manager:

  1. Go to Fishjam Dashboard
  2. Click Settings
  3. Click Reset App
  4. Get your new app UUID

This will invalidate all existing tokens (including the management token!) and give you a fresh sandbox environment.

Next steps

Once you've tested your integration with Room Manager:

For production deployment: