AgentSkillsCN

websocket-development

Lupin的WebSocket开发模式。当您从事WebSocket连接开发、处理实时事件、实现WebSocket认证、管理会话、进行音频流传输、排查WebSocket相关问题,或解决连接故障时,可参考此模式。

SKILL.md
--- frontmatter
name: websocket-development
description: WebSocket development patterns for Lupin. Use when working on WebSocket connections, real-time events, WS authentication, session management, audio streaming, debugging WebSocket issues, or fixing connection problems.
metadata:
  author: lupin-team
  version: "1.0"
  last-updated: "2026-01-28"

WebSocket Development

Quick reference for WebSocket development in the Lupin project.

Architecture Overview

Lupin uses a dual-session WebSocket design:

EndpointPurposeEvents
/ws/queue/{session_id}Main applicationQueue, notifications, system events
/ws/audio/{session_id}Audio streamingTTS streaming, audio events

Key Principle: User-centric routing - events routed by user identity, not just session.

Authentication

All connections require auth_request with Bearer token:

javascript
// Token format
Bearer mock_token_email_{email}

// Example auth message
{
  "type": "auth_request",
  "token": "Bearer mock_token_email_user@example.com"
}

Session ID Format

Session IDs use "adjective noun" format for human-readability:

  • wise penguin
  • clever dolphin
  • swift falcon

Stored in localStorage for persistence across page reloads.

Quick Debugging Checklist

IssueCheck
Connection failsServer running on port 7999?
No events receivedAuth succeeded? Events subscribed?
Session conflictsClear localStorage, refresh page
Audio not streamingBoth queue AND audio WS connected?

Development Tips

  1. Enable debug mode: Set app_debug = true in lupin-app.ini (5s vs 60s updates)
  2. Monitor traffic: Browser DevTools → Network → WS tab
  3. Check auth: Console shows success/failure messages
  4. Configuration: All settings under websocket_* keys in lupin-app.ini

Event Subscription

Clients subscribe to specific event types to filter unwanted events:

javascript
// Subscribe to events
{
  "type": "subscribe",
  "events": ["queue_update", "notification", "time_update"]
}

Detailed References

For comprehensive documentation:

Anti-Patterns

  • Don't hardcode session IDs - use localStorage persistence
  • Don't skip auth_request - connections will be rejected
  • Don't forget both WebSockets for audio features
  • Don't ignore subscription filtering - causes event spam