Troubleshooting

Solutions to common issues when using the Talker Web SDK.

Connection Issues

Connection stuck on "connecting"

Symptoms: Connection status never changes to "connected".

Solutions:

  1. Check network connectivity
  2. Verify credentials are correct
  3. Enable DEBUG logging to see connection details
  4. Check browser console for errors
  5. Ensure you're not behind a restrictive firewall
TypeScript
// Enable debug logging
const client = new TalkerClient({
  // ...credentials
  loggerConfig: {
    level: LogLevel.DEBUG,
    enableConsole: true,
  },
});

// Check connection status
client.on('connection_change', ({ status }) => {
  console.log('Connection status:', status);
});

Frequent disconnections

Solutions:

  • Check for network stability issues
  • The SDK auto-reconnects, but if this is happening frequently, there may be network issues
  • Check if you're on a VPN that might be interfering

PTT Not Working

startTalking() returns not_connected

TypeScript
// Check if fully connected before PTT
if (!talker.isFullyConnected()) {
  console.log('Not connected yet');
  // Wait for connection
  talker.on('connection_change', ({ connected }) => {
    if (connected) {
      console.log('Now connected, can start talking');
    }
  });
}

No audio is being sent

Checklist:

  1. Check microphone permissions
  2. Verify microphone is not muted: talker.setMicrophoneEnabled(true)
  3. Check if the correct microphone is selected
  4. Use getAudioLevel() to verify audio input
TypeScript
// Check audio level
setInterval(() => {
  const level = talker.getAudioLevel();
  console.log('Audio level:', level);
  // Should be > 0 when speaking into microphone
}, 100);

No Audio Playback

Can't hear incoming broadcasts

Checklist:

  1. On iOS/Safari, call unlockAudio() on user interaction
  2. Check speaker is enabled: talker.setSpeakerEnabled(true)
  3. Verify volume is not zero: talker.setVolume(1.0)
  4. Check speaker device selection
  5. Check if playback queue is paused
TypeScript
// iOS audio unlock (call on user gesture)
document.addEventListener('click', () => {
  talker.unlockAudio();
}, { once: true });

// Ensure audio is enabled
talker.setSpeakerEnabled(true);
talker.setVolume(1.0);

// Check queue status
console.log('Queue paused:', talker.getPlaybackQueueLength());
talker.resumeQueue();

Audio Permission Denied

TypeScript
try {
  await navigator.mediaDevices.getUserMedia({ audio: true });
} catch (error) {
  if (error.name === 'NotAllowedError') {
    console.log('Permission denied by user');
    // Show instructions to enable in browser settings
  } else if (error.name === 'NotFoundError') {
    console.log('No microphone found');
  } else {
    console.log('Error:', error.name, error.message);
  }
}

How to reset permissions

Chrome:

  1. Click the lock icon in the address bar
  2. Find "Microphone" in the list
  3. Change to "Allow" or "Reset"
  4. Refresh the page

Firefox:

  1. Click the lock icon in the address bar
  2. Click the arrow next to the site name
  3. Click "Clear permissions"
  4. Refresh the page

Safari:

  1. Go to Safari > Settings for This Website
  2. Find "Microphone" and set to "Allow"
  3. Refresh the page

Device Issues

Microphone not listed

  1. Ensure permission is granted first (device labels require permission)
  2. Check that the device is connected and recognized by the OS
  3. Try a different USB port
  4. Refresh the device list

Wrong device selected by default

TypeScript
// List and let user select
const devices = await talker.getAudioInputDevices();
console.log('Available microphones:', devices.map(d => d.label));

// Select a specific device
await talker.setAudioInputDevice(devices[1].deviceId);

Credential Errors

"TalkerClient requires a userAuthToken"

You're missing required credentials. Ensure all these are passed:

TypeScript
// All these are required
const client = new TalkerClient({
  userAuthToken: '...',  // From backend
  userId: '...',         // From backend
  a_username: '...',     // From backend
  a_password: '...',     // From backend
});

"Failed to get credentials"

Check that:

  • Your SDK key is correct
  • Your backend can reach the Talker API
  • Network isn't blocking the request

General Debugging Steps

  1. Enable debug logging
    loggerConfig: {
      level: LogLevel.DEBUG,
      enableConsole: true,
    }
  2. Check browser console for errors
  3. Verify network connectivity
    console.log('Online:', navigator.onLine);
  4. Check connection status
    console.log('Status:', talker.getConnectionStatus());
  5. Test with a fresh browser profile (no extensions)

Getting Help

If you're still having issues:

  1. Collect debug logs using the logging guide
  2. Note your browser and version
  3. Describe the steps to reproduce
  4. Contact parag@talker.network with this information
Helpful Information to Include
  • Browser name and version
  • Operating system
  • Debug logs
  • Steps to reproduce the issue
  • Any error messages from the console