Closed stefaniapedrazzi closed 6 years ago
Would it be enough to make the wamp router parameters (SERVER_IP, WS_PORT, RS_PORT, RS_PATH, and REALM) as input arguments to the supervisor program?
Who will be responsible to set the wamp router supervisor program arguments and check that the resources are not already in use?
It would be better to not add this responsibility to the simulation server that starts the Webots instance on the server machine, in order to keep it as simple and generic as possible. But if these arguments are specified in the web page (automatically or using some user input) it will probably be difficult to know which are the resources already in use because when you send the request to start a simulation you don't know on which server machine it will run.
So I think that if these parameters are only used locally on the server machine to run the simulation and doesn't need to be known by the user before the simulation start, then the best and simplest solution is to check the availability dynamically in the supervisor program.
Considering cases, it seems WS_PORT, RS_PORT, and RS_PATH should be dynamically set. I will modify the program to dynamically fetch ports and create temporary socket file without conflicts.
I have updated the develop branch to fetch ports and create temporary socket file dynamically.
I checked I could run multiple instances of Webots running AI World Cup simulation on both linux and windows.
Thank you. I will check later today and close this issue.
Currently it is not to be possible to run multiple instances of the simulation at the same time on a single machine because of the websockets ports that are not dynamically computed in case they are already in used. https://github.com/aiwc/test_world/blob/master/controllers/supervisor/constants.hpp
A server machine usually has enough computational power to run multiple simulations and it would be very convenient to solve this port conflict.