RocketChat / RocketChat/Rocket.Chat

Conference call push delay

Open
#33,307 5 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

planned
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:
  1. Open desktop client, login as test user (e.g., "John")
  2. Open mobile client, login as "John", then go to standby screen (close app without logout)
  3. Open any other client (e.g. browser), login as another test user (e.g., "Susan")
  4. Call "John" from "Susan's" client
Expected behavior:
  1. Desktop notification about incoming call for John is displayed
  2. Mobile push notification on John's mobile device is displayed immediately (with Accept and Decline buttons).
Actual behavior:
  1. Desktop notification about incoming call for John displayed
  2. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.