Many embedded systems have a limited amount of memory, which would normally run programs with smaller footprints than on desktops or servers. For example, nginx and Apache2 are the common web servers, but on hardware with limited memory, smaller footprint web servers may be required, so that’s why I wrote a list of web servers for embedded systems running Linux/uClinux many years ago.
But now, even platforms based on microcontrollers often need to run web server usually for configuration. We’ve already shown how to use Arduino to serve a simple web page and did the same in Getting Started with NodeMCU Board Powered by ESP8266 WiSoC but using Lua programming language instead. It may be more convenient to run a proper web server however, as it’s easier to change the interface, and we previously covered MicroWebSrv lightweight web server that works on platforms running MicroPython such as Pycom boards.
Real Time Logic offers another open source alternative with their Minnow Server that supports secure connection using secure Websockets instead of HTTPS since the latter consumes too many resources as explained in detail in a blog post. The server is optimized for Single Page Applications (SPA) requiring just one websocket connection to further lower the memory footprint.
Minnow Server supports lwIP raw TCP API port for bare metal targets, as well as various operating systems real-time or not:
- Microchip Harmony TCP/IP
- Keil MDK
- MQX and RTCS from NXP
- ThreadX and NetX from Express Logic
- POSIX including Linux, Mac, VxWorks, QNX
- Windows Standard Windows and Win CE
- lwIP lwIP Netconn API for RTOS enabled systems
The source code and instructions to get started with Minnow Server are all available on Github.