refactor Notifications rc
This commit is contained in:
parent
7606d8bc77
commit
58b022f738
@ -30,11 +30,13 @@ export class RocketChatCallListener {
|
|||||||
private reconnectDelay = 3000;
|
private reconnectDelay = 3000;
|
||||||
private isConnecting = false;
|
private isConnecting = false;
|
||||||
private isConnected = false;
|
private isConnected = false;
|
||||||
|
private isDdpConnected = false; // Track DDP connection state
|
||||||
private callHandlers: Set<CallEventHandler> = new Set();
|
private callHandlers: Set<CallEventHandler> = new Set();
|
||||||
private userId: string | null = null;
|
private userId: string | null = null;
|
||||||
private authToken: string | null = null;
|
private authToken: string | null = null;
|
||||||
private baseUrl: string | null = null;
|
private baseUrl: string | null = null;
|
||||||
private subscriptionId: string | null = null;
|
private subscriptionId: string | null = null;
|
||||||
|
private connectId: string | null = null;
|
||||||
|
|
||||||
private constructor() {}
|
private constructor() {}
|
||||||
|
|
||||||
@ -92,8 +94,10 @@ export class RocketChatCallListener {
|
|||||||
logger.debug('[ROCKETCHAT_CALL_LISTENER] WebSocket connected');
|
logger.debug('[ROCKETCHAT_CALL_LISTENER] WebSocket connected');
|
||||||
this.isConnecting = false;
|
this.isConnecting = false;
|
||||||
this.isConnected = true;
|
this.isConnected = true;
|
||||||
|
this.isDdpConnected = false; // Reset DDP connection state
|
||||||
this.reconnectAttempts = 0;
|
this.reconnectAttempts = 0;
|
||||||
this.authenticate();
|
// First, establish DDP connection
|
||||||
|
this.connectDDP();
|
||||||
};
|
};
|
||||||
|
|
||||||
this.ws.onmessage = (event) => {
|
this.ws.onmessage = (event) => {
|
||||||
@ -163,7 +167,30 @@ export class RocketChatCallListener {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Authenticate with RocketChat using resume token
|
* Establish DDP connection (required before login)
|
||||||
|
*/
|
||||||
|
private connectDDP(): void {
|
||||||
|
if (!this.ws) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
this.connectId = `connect-${Date.now()}`;
|
||||||
|
const connectMessage = {
|
||||||
|
msg: 'connect',
|
||||||
|
version: '1',
|
||||||
|
support: ['1', 'pre2', 'pre1'],
|
||||||
|
};
|
||||||
|
|
||||||
|
console.log('[ROCKETCHAT_CALL_LISTENER] 🔗 Sending DDP connect message', {
|
||||||
|
connectId: this.connectId,
|
||||||
|
message: connectMessage,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.ws.send(JSON.stringify(connectMessage));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Authenticate with RocketChat using resume token (after DDP is connected)
|
||||||
*/
|
*/
|
||||||
private authenticate(): void {
|
private authenticate(): void {
|
||||||
if (!this.ws || !this.authToken || !this.userId) {
|
if (!this.ws || !this.authToken || !this.userId) {
|
||||||
@ -270,6 +297,17 @@ export class RocketChatCallListener {
|
|||||||
* Handle incoming WebSocket messages
|
* Handle incoming WebSocket messages
|
||||||
*/
|
*/
|
||||||
private handleMessage(message: any): void {
|
private handleMessage(message: any): void {
|
||||||
|
// Handle DDP connected message
|
||||||
|
if (message.msg === 'connected') {
|
||||||
|
console.log('[ROCKETCHAT_CALL_LISTENER] ✅ DDP connected!', {
|
||||||
|
session: message.session,
|
||||||
|
});
|
||||||
|
this.isDdpConnected = true;
|
||||||
|
// Now we can authenticate
|
||||||
|
this.authenticate();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
// Handle error messages
|
// Handle error messages
|
||||||
if (message.msg === 'error') {
|
if (message.msg === 'error') {
|
||||||
const errorDetails = {
|
const errorDetails = {
|
||||||
@ -539,7 +577,9 @@ export class RocketChatCallListener {
|
|||||||
|
|
||||||
this.isConnected = false;
|
this.isConnected = false;
|
||||||
this.isConnecting = false;
|
this.isConnecting = false;
|
||||||
|
this.isDdpConnected = false;
|
||||||
this.subscriptionId = null;
|
this.subscriptionId = null;
|
||||||
|
this.connectId = null;
|
||||||
this.callHandlers.clear();
|
this.callHandlers.clear();
|
||||||
|
|
||||||
logger.debug('[ROCKETCHAT_CALL_LISTENER] Disconnected');
|
logger.debug('[ROCKETCHAT_CALL_LISTENER] Disconnected');
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user