mirror of
https://github.com/xtr-dev/rondevu-client.git
synced 2025-12-14 21:03:23 +00:00
Compare commits
4 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 275c156c64 | |||
| c60a5f332a | |||
|
|
ecd6be7f8a | ||
|
|
e652fdc130 |
4
package-lock.json
generated
4
package-lock.json
generated
@@ -1,12 +1,12 @@
|
||||
{
|
||||
"name": "@xtr-dev/rondevu-client",
|
||||
"version": "0.18.2",
|
||||
"version": "0.18.3",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "@xtr-dev/rondevu-client",
|
||||
"version": "0.18.2",
|
||||
"version": "0.18.3",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@noble/ed25519": "^3.0.0"
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "@xtr-dev/rondevu-client",
|
||||
"version": "0.18.2",
|
||||
"version": "0.18.3",
|
||||
"description": "TypeScript client for Rondevu with durable WebRTC connections, automatic reconnection, and message queuing",
|
||||
"type": "module",
|
||||
"main": "dist/index.js",
|
||||
|
||||
@@ -259,6 +259,7 @@ export class Rondevu extends EventEmitter {
|
||||
private filling = false
|
||||
private pollingInterval: ReturnType<typeof setInterval> | null = null
|
||||
private lastPollTimestamp = 0
|
||||
private isPolling = false // Guard against concurrent poll execution
|
||||
|
||||
private constructor(
|
||||
apiUrl: string,
|
||||
@@ -634,6 +635,13 @@ export class Rondevu extends EventEmitter {
|
||||
private async pollInternal(): Promise<void> {
|
||||
if (!this.filling) return
|
||||
|
||||
// Prevent concurrent poll execution to avoid duplicate answer processing
|
||||
if (this.isPolling) {
|
||||
this.debug('Poll already in progress, skipping')
|
||||
return
|
||||
}
|
||||
|
||||
this.isPolling = true
|
||||
try {
|
||||
const result = await this.api.poll(this.lastPollTimestamp)
|
||||
|
||||
@@ -674,6 +682,8 @@ export class Rondevu extends EventEmitter {
|
||||
}
|
||||
} catch (err) {
|
||||
console.error('[Rondevu] Polling error:', err)
|
||||
} finally {
|
||||
this.isPolling = false
|
||||
}
|
||||
}
|
||||
|
||||
@@ -710,6 +720,7 @@ export class Rondevu extends EventEmitter {
|
||||
stopFilling(): void {
|
||||
this.debug('Stopping offer filling and polling')
|
||||
this.filling = false
|
||||
this.isPolling = false // Reset polling guard
|
||||
|
||||
// Stop polling
|
||||
if (this.pollingInterval) {
|
||||
|
||||
Reference in New Issue
Block a user