Skip to content
This repository has been archived by the owner on Aug 21, 2024. It is now read-only.

Fixed issues with audio/video systems and gameserver shutdown. #5126

Merged
merged 1 commit into from
Feb 9, 2022

Conversation

barankyle
Copy link
Member

@barankyle barankyle commented Feb 9, 2022

Summary

Gameservers were including the disconnecting user in their list of activeUsers, which would cause them to
never shut down. For local development, added engineStarted = false as part of shutdown so that they can
be started anew.

MediaStreamSystem was only being started by initializeRealtimeSystems, which was only ever called by world
servers. Moved its inclusion in startup to initializeMediaServerSystems.

Updated Authorization handler. Previously, it was looking for an accessToken and userId on incoming data, but doing
nothing with the token. Sometimes the client wouldn't have a resolved userId when it made that call, leading
to no Authorization and the process hanging. Removed userId from the call, and now the user is fetched by
authenticating the token.

Fixed some issues that came about from the inclusion of the 'media' client. Since it doesn't have a socket or media value,
references to client.socket!.emit or client.media[whatever] would throw errors - now checking that client.socket is not null.
Also fixed problem in sendCurrentProducers where encountering any client that didn't have media to send or didn't have a
socket would kill iterating over all the clients.

Added a script 'start-all-docker.sh' that tries to start all four local Docker services.

Simplified some boolean comparisons.

Checklist

  • Pre-push checks pass npm run check
    • Linter passing via npm run lint
    • Unit & Integration tests passing via npm run test:packages
    • Docker build process passing via npm run build-client
  • If this PR is still a WIP, convert to a draft
  • When this PR is ready, mark it as "Ready for review"
  • Changes have been manually QA'd
  • Changes reviewed by at least 2 approved reviewers

References

References to pertaining issue(s)

QA Steps

  1. git checkout pr_branch_name
  2. npm install
  3. npm run dev-reinit
  4. npm run dev

List any additional steps required to QA the changes of this PR, as well as any supplemental images or videos.

Reviewers

Reviewers for this PR

Gameservers were including the disconnecting user in their list of activeUsers, which would cause them to
never shut down. For local development, added `engineStarted = false` as part of shutdown so that they can
be started anew.

MediaStreamSystem was only being started by initializeRealtimeSystems, which was only ever called by world
servers. Moved its inclusion in startup to initializeMediaServerSystems.

Updated Authorization handler. Previously, it was looking for an accessToken and userId on incoming data, but doing
nothing with the token. Sometimes the client wouldn't have a resolved userId when it made that call, leading
to no Authorization and the process hanging. Removed userId from the call, and now the user is fetched by
authenticating the token.

Fixed some issues that came about from the inclusion of the 'media' client. Since it doesn't have a socket or media value,
references to client.socket!.emit or client.media[whatever] would throw errors - now checking that client.socket is not null.
Also fixed problem in sendCurrentProducers where encountering any client that didn't have media to send or didn't have a
socket would kill iterating over all the clients.

Added a script 'start-all-docker.sh' that tries to start all four local Docker services.

Simplified some boolean comparisons.
@barankyle barankyle linked an issue Feb 9, 2022 that may be closed by this pull request
@barankyle barankyle merged commit bb0a679 into dev Feb 9, 2022
@barankyle barankyle deleted the video-fixes branch February 9, 2022 01:35
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

Media connection & video is buggy
2 participants