Description
TubeSock has been discontinued for quite some time already, but is still used in CodeOcean. In the recent years, Tubesock has caused multiple (performance) issues and serious bugs, so that we should really aim to replace it soon.
To address some bugs, we have even forked it: https://github.com/openHPI/tubesock
It would be time to replace the library with a more reliable solution and also use ActionCable for the given purposes. We use ActionCable already for pair programming sessions and made good experiences with it, so that It should be a good fit.
After switching, we can probably also rethink how we create submissions. Currently, each code run includes the two steps:
- A submission is created through AJAX
- The resulting submission (based on its ID) is then executed by establishing a dedicated WebSocket connection.
What about having just a single persistent WebSocket connection and use it for any implementation-related request (such as creating a submission, running the submission, ...)? This would improve performance and remove some unnecessary and complex code.