Appearance
SharedActivity
Shared activity state for multi-user sessions (SharePlay, WebSocket, etc.)
Always present on experience.sharedActivity. When no session is active, isActive and isOwner return false, participantCount returns 0.
Example:
javascript
if (experience.sharedActivity.isActive && experience.sharedActivity.isOwner) {
// Only the owner connects to external services
openai.connect();
}
experience.sharedActivity.onOwnershipChanged = function(isOwner) {
if (isOwner) {
openai.connect();
} else {
openai.disconnect();
}
};Properties
isActive
- Type: boolean
- Whether a shared activity session is currently active
isOwner
- Type: boolean
- Whether the local participant is the session owner (presenter)
onMessage
- Type: any
- Called when a script message is received from another participant
Example:
javascript
experience.sharedActivity.onMessage = function(data) {
console.log('Received:', data.type);
};onOwnershipChanged
- Type: any
- Called when session ownership changes (session start, transfer, owner leaves, session end)
Example:
javascript
experience.sharedActivity.onOwnershipChanged = function(isOwner) {
if (isOwner) { startAI(); } else { stopAI(); }
};participantCount
- Type: number
- Number of remote participants (excludes local participant)
Methods
send()
javascript
send(data: any): trueSend data to all participants (reliable delivery).
object or array; primitives are rejected).
per-message cap, and enqueued for transmission. false on any validation failure – check the console for the specific reason. Existing callers that ignore the return value continue to work.
Example:
javascript
experience.sharedActivity.send({ type: 'orb_state', state: 'speaking' });Parameters:
data(any) - JSON-serializable data to send (must be a plain
Returns: true
sendFrequent()
javascript
sendFrequent(data: any): trueSend data to all participants (unreliable delivery, suitable for high-frequency updates).
for the full validation contract.
Example:
javascript
experience.sharedActivity.sendFrequent({ type: 'audio_level', level: 0.7 });Parameters:
data(any) - JSON-serializable data to send.
Returns: true