fix: [Experimental hotfix 1] Fix Signaling issues Toju App
1. Server: WebSocket ping/pong heartbeat (index.ts) Added a 30-second ping interval that pings all connected clients Connections without a pong response for 45 seconds are terminated and cleaned up Extracted removeDeadConnection() to deduplicate the cleanup logic between close events and dead connection reaping 2. Server: Fixed sendServerUsers filter bug (handler.ts:13) Removed && cu.displayName from the filter — users who joined a server before their identify message was processed were silently invisible to everyone. This was the direct cause of "can't see each other" in session 2. 3. Client: Typing message now includes serverId Added serverId: this.webrtc.currentServerId to the typing payload Added a currentServerId getter on WebRTCService
This commit is contained in:
@@ -10,7 +10,7 @@ interface WsMessage {
|
||||
/** Sends the current user list for a given server to a single connected user. */
|
||||
function sendServerUsers(user: ConnectedUser, serverId: string): void {
|
||||
const users = Array.from(connectedUsers.values())
|
||||
.filter(cu => cu.serverIds.has(serverId) && cu.oderId !== user.oderId && cu.displayName)
|
||||
.filter(cu => cu.serverIds.has(serverId) && cu.oderId !== user.oderId)
|
||||
.map(cu => ({ oderId: cu.oderId, displayName: cu.displayName ?? 'Anonymous' }));
|
||||
|
||||
user.ws.send(JSON.stringify({ type: 'server_users', serverId, users }));
|
||||
|
||||
Reference in New Issue
Block a user