Skip to content

Conversation

@danxuliu
Copy link
Member

@danxuliu danxuliu commented Jun 12, 2020

⚠️ ⚠️ ⚠️ Work in progress ⚠️ ⚠️ ⚠️

How to test (scenario 1)

  • Make joining the call from the external signaling server fail sometimes by adding if (rand(0, 9) < 7) { sleep(11); } before the ping in SignalingController (11 or whatever value you have set as the timeout in the external signaling server + 1)
  • Open the browser console
  • As user A, join a conversation (repeat as needed until the message Join room XXX is shown followed by Joined, which means that joining in the external signaling server did not wait and succeeded)
  • Start a call
  • In a private window, open the browser console
  • As user B, join the same conversation (repeat as needed until the message Join room XXX is shown but it is not followed by Joined, which means that joining in the external signaling server is taking longer)
  • Join the call

Result with this pull request

Joined is eventually shown with an error, but joining is automatically retried until it succeeds. The call view is not shown until the conversation is joined, and when that happens it connects to user A.

Result without this pull request

Joined is eventually shown with an error. The call view is immediately shown, but it never connects to user A.

How to test (scenario 2) - WIP

  • Make joining the call from the external signaling server take longer sometimes by adding if (rand(0, 9) < 3) { sleep(8); } before the ping in SignalingController (8 or whatever value you have set as the timeout in the external signaling server - 2)
  • Open the browser console
  • Join a conversation (repeat as needed until the message Join room XXX is shown but it is not followed by Joined, which means that joining in the external signaling server is taking longer)
  • Change to a different conversation (repeat as needed until the message Join room XXX is shown followed by Joined, which means that joining in the external signaling server did not wait and succeeded)

Result with this pull request

Joined is eventually shown for the previous conversation, but the latest conversation is automatically joined again. If a call is started it will connect to the other user.

Result without this pull request

Joined is eventually shown for the previous conversation. If a call is started it will never connect to the other user.

danxuliu added 2 commits June 12, 2020 20:34
"roomCollection" is a leftover from Talk < 8.

Signed-off-by: Daniel Calviño Sánchez <[email protected]>
Joining a room in the external signaling server can fail (for example,
if the Nextcloud server took too long to send a response and joining
timed out). When that happens an error is returned, but the error was
ignored. Now, when joining a room in the external signaling server fails
it is tried again and again until the room is joined.

Signed-off-by: Daniel Calviño Sánchez <[email protected]>
@danxuliu danxuliu added 3. to review bug feature: signaling 📶 Internal and external signaling backends feature: frontend 🖌️ "Web UI" client labels Jun 12, 2020
@danxuliu danxuliu added this to the 💚 Next Major (20) milestone Jun 12, 2020
@danxuliu
Copy link
Member Author

/backport to stable19

@danxuliu
Copy link
Member Author

/backport to stable18

@nickvergessen
Copy link
Member

Master is 22 now

@nickvergessen
Copy link
Member

I will close the PR for now (as there was no active development since 6 months). Anyone can pick it up whenever they want and reopen the PR.

@nickvergessen nickvergessen deleted the handle-error-when-joining-room-in-the-external-signaling-server branch October 7, 2021 16:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

2. developing bug feature: frontend 🖌️ "Web UI" client feature: signaling 📶 Internal and external signaling backends

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants