-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathtest_websocket_optimization.sh
More file actions
executable file
·85 lines (73 loc) · 3.16 KB
/
test_websocket_optimization.sh
File metadata and controls
executable file
·85 lines (73 loc) · 3.16 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#!/bin/bash
# 🧪 WebSocket Optimization Test Script
# This script demonstrates the optimized WebSocket connection approach
echo "🚀 Testing WebSocket Connection Optimization"
echo "=============================================="
API_BASE="http://localhost:8081"
JWT_TOKEN="${1:-your_jwt_token_here}"
if [ "$JWT_TOKEN" = "your_jwt_token_here" ]; then
echo "❌ Please provide a JWT token as the first argument"
echo "Usage: $0 <jwt_token>"
exit 1
fi
echo ""
echo "📊 Checking initial WebSocket status..."
curl -s "$API_BASE/sse/chat/websocket-status" | jq '.' || echo "Install jq for prettier JSON output"
echo ""
echo "🔍 Checking traditional chat session status..."
curl -s "$API_BASE/sse/chat/active" -H "Authorization: Bearer $JWT_TOKEN" | jq '.' || echo "Install jq for prettier JSON output"
echo ""
echo "💡 OPTIMIZATION DEMONSTRATION:"
echo "================================"
echo ""
echo "🔄 OLD APPROACH (Deprecated):"
echo "1. Frontend connects WebSocket"
echo "2. Frontend calls: POST /sse/chat/open ❌ (Extra API call)"
echo "3. Send messages via WebSocket"
echo "4. Frontend calls: POST /sse/chat/close ❌ (Extra API call)"
echo "5. Frontend disconnects WebSocket"
echo ""
echo "✨ NEW OPTIMIZED APPROACH:"
echo "1. Frontend connects WebSocket ✅ (Backend auto-detects: chat window opened)"
echo "2. Send messages via WebSocket ✅ (Backend auto-detects: specific chat partner)"
echo "3. Frontend disconnects WebSocket ✅ (Backend auto-detects: chat window closed)"
echo ""
echo "🎯 BENEFITS:"
echo "- 🚀 2 fewer HTTP requests per chat session"
echo "- 🎯 Simplified logic: WebSocket state = chat window state"
echo "- 🧹 Automatic cleanup on disconnection"
echo "- 🔒 No risk of missed open/close API calls"
echo ""
echo "🧪 Testing legacy endpoints (should show deprecation warnings)..."
echo ""
echo "📤 Testing legacy open endpoint..."
curl -s -X POST "$API_BASE/sse/chat/open?chatPartnerId=test@example.com" \
-H "Authorization: Bearer $JWT_TOKEN" \
-H "Content-Type: application/json"
echo ""
echo ""
echo "📤 Testing legacy close endpoint..."
curl -s -X POST "$API_BASE/sse/chat/close?chatPartnerId=test@example.com" \
-H "Authorization: Bearer $JWT_TOKEN" \
-H "Content-Type: application/json"
echo ""
echo ""
echo "📊 Final WebSocket status check..."
curl -s "$API_BASE/sse/chat/websocket-status" | jq '.' || echo "Install jq for prettier JSON output"
echo ""
echo ""
echo "✅ OPTIMIZATION TEST COMPLETE"
echo "=============================="
echo ""
echo "🔍 What to look for in backend logs:"
echo "- '🔌 WebSocket CONNECTED' when clients connect"
echo "- '📱 Auto-detected chat session' when messages are sent"
echo "- '🔌 WebSocket DISCONNECTED' when clients disconnect"
echo "- '⚠️ LEGACY API USED' when old endpoints are called"
echo ""
echo "📱 Frontend Implementation:"
echo "- hybridChatService.ts uses optimized approach"
echo "- No explicit API calls to /sse/chat/open or /sse/chat/close"
echo "- WebSocket connection manages chat session state automatically"
echo ""
echo "🎉 The optimization eliminates redundant API calls while maintaining all functionality!"