RocketChat / RocketChat/Rocket.Chat
Conference call push delay
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 46.1k
- Forks
- 13.9k
- Avg merge
- 3d 3h
- Merged PRs (30d)
- 130
Description
Description:
Seems that "call pushes" go through push scheduler queue, like usual text messages pushes.
Even if mobile ringing is enabled.
That means that if user has at least one online non-mobile endpoint (and so considered as "online"), his mobile devices will receive "ringing" push only in 120 seconds, when the call will already be forcibly ended due to timeout.
Steps to reproduce:
- Open desktop client, login as test user (e.g., "John")
- Open mobile client, login as "John", then go to standby screen (close app without logout)
- Open any other client (e.g. browser), login as another test user (e.g., "Susan")
- Call "John" from "Susan's" client
Expected behavior:
- Desktop notification about incoming call for John is displayed
- Mobile push notification on John's mobile device is displayed immediately (with Accept and Decline buttons).
Actual behavior:
- Desktop notification about incoming call for John displayed
- Mobile push notification on John's mobile device is delayed for 120 seconds and then displayed EVEN if call has been ended already.
Server Setup Information:
- Version of Rocket.Chat Server: 6.12.0
- License Type: Starter
- Number of Users: 5
- Operating System: Ubuntu 24.04.1 LTS
- Deployment Method: docker
- Number of Running Instances: 1
- DB Replicaset Oplog: Enabled
- NodeJS Version: v14.21.3
- MongoDB Version: 5.0.24 / wiredTiger
Client Setup Information
- Desktop App or Browser Version: 128.0.6613.138 (last, official build)
- Operating System: Windows 10 ver 1809 build 17763.1457
Additional context
- Testing purposes workspace
- White-labelled mobile app
- Own push FCM account
- Message pushes work OK.
Seems that changing
const {
NOTIFICATIONS_WORKER_TIMEOUT = 2000,
NOTIFICATIONS_BATCH_SIZE = 100,
NOTIFICATIONS_SCHEDULE_DELAY_ONLINE = 1, // was 120
NOTIFICATIONS_SCHEDULE_DELAY_AWAY = 0,
NOTIFICATIONS_SCHEDULE_DELAY_OFFLINE = 0
} = process.env;
in NotificationClass solves the problem (but, obviously, will cause quick push limit exhaust).
Maybe, call pushes should be sent to all mobile endpoints immediately, or at least this behaviour should be configurable?
Relevant logs:
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by inspecting NotificationClass and the notification scheduler behavior around NOTIFICATIONS_SCHEDULE_DELAY_ONLINE, then reproduce the listed desktop-to-mobile call flow. Determine how call pushes are handled versus ordinary message pushes; done means incoming mobile call notifications arrive immediately while normal push scheduling and limits continue to work.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- javascript, typescript
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100