Participant
功能A person who joins and attends a video meeting, with standard user permissions and capabilities
What is a Participant?
A participant (also called attendee or member) is anyone who joins a video conference meeting. Unlike the host, participants have standard user permissions and limited control over meeting settings. Participants can see and hear other attendees, communicate through audio/video, share content (if permitted), and use collaboration features, but cannot manage meeting-wide settings or moderate other participants.
The participant role is the default role for most users joining a meeting, with the host having the ability to promote participants to co-hosts or assign additional privileges as needed.
Participant Capabilities
Standard Permissions
Typical capabilities available to all participants:
- Audio/Video Control: Mute/unmute their own microphone and turn their camera on/off
- View Other Participants: See video feeds and participant list
- Screen Sharing: Share their screen (if host has enabled this permission)
- Chat Messages: Send messages to everyone or specific participants (based on host settings)
- Reactions: Use emoji reactions, raise hand, or other non-verbal cues
- View Shared Content: See screens, presentations, or files shared by others
- Rename Self: Change their own display name
- Leave Meeting: Exit the meeting at any time
Restricted Actions
Actions participants cannot perform without host privileges:
- Cannot mute other participants (except themselves)
- Cannot remove participants from the meeting
- Cannot admit participants from waiting room
- Cannot lock the meeting or end it for others
- Cannot start or stop recording (in most platforms)
- Cannot create or manage breakout rooms
- Cannot change meeting-wide settings
- Cannot promote or demote other participants
Types of Participants
Authenticated Participants
Participants who join with verified identities:
- Organization Members: Employees or members of the host's organization
- Invited Guests: External participants with calendar invitations or access links
- Registered Users: Participants with accounts on the platform
// Join meeting with authentication
const session = await join({
url: meetingUrl,
token: authenticatedUserToken,
userName: 'John Doe',
userData: {
role: 'participant',
email: '[email protected]',
department: 'Engineering'
}
});Anonymous Participants
Participants joining without formal authentication:
- Guest Users: Join via public link without account
- Limited Visibility: May have email domain shown instead of full details
- Additional Screening: May require host approval from waiting room
Special Participant Types
- Presenters: Participants with elevated permissions to share content (common in webinars)
- Panelists: Speakers in webinar-style meetings with audience visibility
- Attendees: View-only participants in large events (can't unmute or share)
- Interpreters: Participants providing live language interpretation
Participant State Management
Connection States
Participants can be in various connection states:
- Joining: In the process of connecting to the meeting
- Waiting: In the waiting room awaiting host admission
- Active: Connected and participating in the meeting
- Away: Joined but inactive (may be in another app/tab)
- Reconnecting: Temporarily disconnected, attempting to rejoin
- Left: Exited the meeting
// Track participant state changes
socket.on('participant-state-changed', ({ participantId, state, reason }) => {
updateParticipantUI(participantId, {
state: state, // 'active', 'away', 'reconnecting'
lastActivity: Date.now()
});
if (state === 'reconnecting') {
showNotification(`${participantName} is reconnecting...`);
}
});Media States
- Audio Muted/Unmuted: Microphone state
- Video On/Off: Camera state
- Screen Sharing: Currently sharing screen or not
- Hand Raised: Requesting to speak
- Speaking: Currently speaking (detected via audio level)
Participant List and UI
Participant Panel
Most video conferencing applications display participants in a dedicated panel:
- Sorted List: Alphabetically or by join time, with host typically shown first
- Status Indicators: Icons showing mute status, hand raised, screen sharing
- Audio Levels: Visual indicators of who is speaking
- Connection Quality: Network strength indicators
- Quick Actions: Buttons for direct messaging, pinning video, etc.
// Participant data structure
const participant = {
id: 'user-123',
name: 'John Doe',
role: 'participant',
isHost: false,
audio: {
muted: false,
level: 0.75 // 0-1 range
},
video: {
enabled: true,
quality: 'high'
},
connectionQuality: 'good', // 'excellent', 'good', 'poor', 'reconnecting'
joinTime: 1640000000000,
handRaised: false,
reactions: [],
screenSharing: false
};Grid vs Gallery View
- Grid View: Equal-sized tiles for all participants
- Speaker View: Large view of active speaker, thumbnails of others
- Gallery View: Paginated grid showing all participants
- Custom Layouts: Spotlighting specific participants
Participant Interactions
Non-Verbal Communication
Participants use various non-verbal methods to communicate:
- Raise Hand: Request to speak or ask a question
- Emoji Reactions: Thumbs up, applause, heart, etc.
- Status Updates: Away, Do Not Disturb, In a Call
- Custom Reactions: Platform-specific animated reactions
Chat and Messaging
Participants can send messages with various scopes:
- Public Chat: Messages visible to all participants
- Private Messages: Direct messages to specific participants
- Host-Only Messages: Questions or notes sent only to host/moderators
Polls and Q&A
- Answer Polls: Respond to surveys or questions
- Submit Questions: Ask questions in Q&A panel
- Upvote Questions: Vote on other participants' questions
Implementation in WebRTC
Adding Participant to Meeting
// Server-side: Add participant to meeting
function addParticipant(meetingId, userId, userData) {
const participant = {
id: userId,
name: userData.name,
email: userData.email,
role: 'participant',
joinTime: Date.now(),
mediaState: {
audioMuted: true, // Muted by default
videoEnabled: false
},
permissions: getParticipantPermissions(meetingId)
};
// Add to meeting participants list
meetings.get(meetingId).participants.set(userId, participant);
// Notify existing participants
broadcastToMeeting(meetingId, {
type: 'participant-joined',
participant: participant
}, userId); // Exclude the joining user
// Send participant list to new user
sendToUser(userId, {
type: 'meeting-joined',
meeting: getMeetingInfo(meetingId),
participants: Array.from(meetings.get(meetingId).participants.values())
});
return participant;
}Participant Permissions
// Define participant permissions based on meeting settings
function getParticipantPermissions(meetingId) {
const settings = getMeetingSettings(meetingId);
return {
canShareScreen: settings.allowParticipantScreenShare,
canChat: settings.chatEnabled,
canSendPrivateMessages: settings.allowPrivateChat,
canRaiseHand: true,
canReact: settings.reactionsEnabled,
canRenameself: settings.allowRename,
canUnmuteSelf: settings.allowUnmute || false,
canEnableVideo: settings.allowVideo !== false
};
}Participant Limits
Platform-Specific Maximums
- Zoom: Up to 1,000 participants (varies by plan), 49 videos on screen
- Google Meet: Up to 500 participants (Enterprise), 49 tiles in grid
- Microsoft Teams: Up to 10,000 view-only attendees (webinar mode), 1,000 interactive
- Webex: Up to 100,000 view-only, 1,000 interactive
Performance Considerations
- Video Rendering: Browser limits on simultaneous video decodes (typically 25-49)
- Bandwidth: More participants = more streams to receive (in P2P or SFU)
- CPU Usage: Each video decode requires CPU resources
- UI Complexity: Large participant lists require virtual scrolling and pagination
Best Practices for Participants
Meeting Etiquette
- Join on Time: Arrive a few minutes early to test equipment
- Mute When Not Speaking: Reduce background noise
- Use Video: Enable camera for better engagement (when appropriate)
- Professional Background: Use virtual background or ensure clean environment
- Dress Appropriately: Dress as you would for in-person meeting
- Minimize Distractions: Close unnecessary apps, silence phone
Engagement Tips
- Use Reactions: Provide non-verbal feedback to avoid interruptions
- Raise Hand: Wait to be recognized rather than interrupting
- Use Chat Thoughtfully: Share links and ask questions without disrupting flow
- Pay Attention: Don't multitask excessively, stay engaged
Accessibility for Participants
- Closed Captions: Enable live captions for hearing impaired
- Screen Readers: Support for visually impaired participants
- Keyboard Shortcuts: Quick access to mute, camera, hand raise
- High Contrast Modes: Visual accessibility options
- ASL Interpretation: Pin interpreter for deaf participants