WeIO IDE Architecture Overview - nodesign/weioIDE GitHub Wiki

Two servers, http & ws

WeIO IDE has two servers, http for all html contents and websocket server for backend communication.

WeIO Websocket Server has special dedicated Configuration file that is used to distribute good port addresses and point to good folders.

Configuration file points to root directory where all projects are stored. It's extremely useful to have one directory to store all your projects. That way it's easier to make updates specially if your projects are in embedded electronics.

Client will never know for absolute path of your projects. ONLY server knows for the absolute path. Client only operates with relative addresses. This approach simplifies development and avoids security issues.

Run it in every language

Each project in weioIDE needs to have one configuration file written in TOML that is easy to understand and to modify. This file describes what will happen when user click on Play button. It's dedicated to users so they can modify it. There is no language preference here. Even if you want to compile something in C, you can, just write your makefile and write the instruction in TOML to call it.

On Play button node server spawns one process and keeps his PID in memory. If you click on Stop button node server will kill (SIGTERM) running process using it's PID. However if you click again on Play and process is not yet finished than server will kill it violently (SIGKILL).

Stdout and Stderr are streamed in realtime to the client application. Users must make attention here that their outputs are non-buffered, otherwise stdout will be flushed once buffer is full. We really don't want that. For Python users it's easy to demand unbuffered execution using -u parameter.