jcrodriguez-dis / moodle-mod_vpl

Virtual Programming Lab for Moodle (Module)
GNU General Public License v3.0
100 stars 87 forks source link

Websocket fallback mechanism #181

Open pravn0993 opened 6 months ago

pravn0993 commented 6 months ago

Hello @jcrodriguez-dis,

We are using the VPL plugin for a long time now. Thank you for the wonderful plugin.

According to our use case, we have a lot of users behind firewalls and proxies who are not able to access the programming labs. These firewalls and proxies just block web socket connections even though we use WSS protocol and our MOODLE platform itself using https protocol. While I understand the importance of sockets, does VPL support any fallback mechanism in case WS connection fails? For example, if we use socket.io, it will automatically fall back to long-polling mechanism.

In case VPL doesn't currently have any fallback to sockets, can you guide us on how to implement the same and the changes that would be required in VPL(front end and backend) and Jail server? We will check the possibilities of implementing them.

Have a nice day!

jcrodriguez-dis commented 6 months ago

Dear @pravn0993,

Thank you for your continued use of the VPL plugin and for reaching out with your concerns.

Could you please provide more details about your network configuration? Specifically, are your execution servers accessible from the internet? Implementing a fallback mechanism for unreliable connections is indeed a promising solution. However, there are several considerations to address at this stage. Currently, noVNC only operates over WebSocket, and unfortunately, we don't have a socket.io server-side implementation available for C++.

Your suggestion merits thorough consideration, especially in the context of the limitations you've described. It's essential to explore all aspects of implementing such a fallback mechanism within VPL, both on the frontend and backend, as well as on the Jail server.

Best regards, Juan Carlos

pravn0993 commented 6 months ago

Hi @jcrodriguez-dis

Thanks for your response.

Yes, the jail servers and MOODLE servers are hosted as EC2 instances in AWS and are publicly accessible. The students who connect to the MOODLE platform are behind a proxy network which straight away blocks socket connections. Both MOODLE and Jail servers have valid SSL certificates are accessed from browser through HTTPS protocol.

jcrodriguez-dis commented 6 months ago

Dear @pravn0993,

Thank you for providing the additional details about your network configuration.

While the automatic fallback capability of socket.io presents a promising solution, integrating it with our existing system, particularly with the VPL plugin's reliance on WebSocket through noVNC, and our backend's current infrastructure, poses significant development challenges. Specifically, our system's backend, including the Jail server which is primarily developed in C++, does not currently support a socket.io server-side implementation.

Considering these factors, and despite recognizing the potential benefits of such an integration, we do not have immediate plans to incorporate socket.io as a fallback mechanism for WebSocket connections.

I recommend, as a workaround, updating and configuring proxy settings to allow WebSocket connections.

Best regards,

Juan Carlos