Websockets (DPU <-> eVOLVER)

We’ve been developing an improved framework for communication between eVOLVER and the data processing unit (DPU), the scripts running on the lab computer that controls the experiment. Primarily, this involves switching the communication protocol from UDP to Websockets. Let me go into a bit more details:

Communication Using UDP
When I initially designed eVOLVER, I used UDP because of the simplicity. UDP is primarily used for things like video conferencing or broadcasting data without a handshake (or insurance that it got to the target). Therefore, in the initial code, there were a lot of checks and balances programmed in the eVOLVER script to make sure commands don’t run multiple times. Additionally, it limited the complexity of commands we could run. This was a great place to start, but not the right way to move forward.

Transition to Websockets
A lot of different communications protocols have been developed for things like chat rooms, interfacing with servers, and streaming media content. One of which that have been gaining more popularity recently is a protocol known as websockets (I am no expert in this field so forgive me if I describe some terms incorrectly). Ultimately transitioning to websockets is useful because the protocol is better supported, reconnection robustness, you can specify callbacks much easier with lots of examples online, and better documentation on error handling.

What this means for using eVOLVER?
This means that a lot of the legacy code we are currently transitioning out of that used the UDP protocol. We are currently rolling out the new protocol. Thanks for those who have been early adopters for being patient with us. We really appreciate the support!