jam-cloud/websocket-gateway
Nuwan 3554ba63b6 fix ws router issues 2023-03-31 03:48:08 +05:30
..
bin
config lots of progress on amazon-readiness 2017-07-09 21:21:29 -05:00
features
lib fix ws router issues 2023-03-31 03:48:08 +05:30
log
script/package
spec rebase develop branch with rails5 upgrade branch 2022-02-15 16:04:36 +05:30
.gitignore add config and bin files related to rails5, fixing asset version errors 2022-02-15 16:28:31 +05:30
.pg_migrate
.ruby-gemset
.ruby-version updating Gems for rails6.1 2023-01-01 08:21:46 +05:30
.simplecov
Gemfile updating Gems for rails6.1 2023-01-01 08:21:46 +05:30
Gemfile.lock fix ws router issues 2023-03-31 03:48:08 +05:30
Guardfile
README.md
Rakefile change database migrations to be natural rails db migrations. 2021-02-13 20:17:18 -06:00
build more debugging 2021-04-02 17:05:48 -05:00
jam_websockets.gemspec
jenkins
migrate.sh

README.md

TODO & DESIGN LIMITATIONS

  • !!!! lock up multi-threaded unsafe data structures

  • The rabbitmq connection isn't pooled. Throughput limitation (but could be resolved by just starting more instances of JamWebsocket behind Haproxy)

  • The database connection isn't pooled. Throughput limitation (but could be resolved by just starting more instances of JamWebsocket behind Haproxy)

  • We make just one user topic registration and session registration for all users/sessions. If ever we had 10 of servers, it could be wasteful. It just depends on how fast the bogus messaging can be ignored

  • The database connection is pooled.

  • The user model is stored in memory, meaning periodically it should be reloaded from the database (in case a user was marked inactive and you want them knocked out of the system)

  • The user could easily join to multiple sessions. Currently, though, the ClientContext object only tracks one jam session topic subscription. This is minimial to change.

  • peek logic not implemented on server for protoc messages; this could be done to save cost of deserialization and serialization for session/user directed messages