The Barracuda Embedded Web Server is a small embedded web server C library. The embedded web server engine is optimized for compact, deeply embedded devices.
Optimized for Small, Deeply Embedded Devices
The Barracuda Embedded Web Server C library can be embedded in small, remote-monitoring and control-management devices, such as sensor network arrays. The Barracuda Embedded Web Server includes C Server Pages for development of small, dynamic web applications.
Compact and Secure
The Barracuda Embedded Web Server offers authentication for completely secure remote device management.
Proven, Stable Technology
The Barracuda Embedded Web Server has been ported and tested with many popular embedded operating systems, including INTEGRITY and µ-velOSity (Green Hills Software), VxWorks (Wind River), Azure RTOS, QNX (QNX Software Systems), Embedded Linux, Windows CE, embOS (SEGGER), SMX (Micro Digital), and MQX (Freescale), and can easily be ported to other operating systems as needed.
Full Support for Key Standards and Protocols
The Barracuda Embedded Web Server and its plug-ins support the following standards and RFCs:
Despite its name, the Barracuda Embedded Web Server can act as an embeddable application server that is specifically designed to function as a framework for running server-based applications.
Developing server-based applications using the Barracuda Embedded Web Server is typically done in C/C++ or by using C Server Pages. C Server Pages makes it possible to insert C or C++ code into HTML template files by using special tags. The technology is similar to other server-side technologies such as JSP, PHP, ASP, etc. The Barracuda Embedded Web Server software development kit (SDK) provides a number of host tools that compile and link CSP files. The tools function similarly to a compiler or cross-compiler and convert the C Server Pages files to either C or C++ code and to data files. A special linker combines all the data files into one file, which is then embedded in your application. The produced C/C++ code is compiled using your standard C/C++ (cross) compiler and the code is then linked with your application.
The Barracuda Embedded Web Server is equipped with robust support for standard HTTP(S) protocols, including AJAX and REST. However, to cater to popular demand, a reference example for using WebSockets for real-time communication is available on GitHub (details below). If you require a more traditional web server example, please do not hesitate to reach out to Real Time Logic for assistance.
The Barracuda Embedded Web Server is ideal for devices that cannot use the Barracuda Application Server because of limited memory. The Barracuda Embedded Web Server is roughly 200Kbytes and requires roughly 60Kbytes of RAM. We recommend using the Barracuda Application Server and the integrated Lua Server Pages plug-in unless you are working with extremely limited memory. See C Server Pages for details.
The ready-to-run and RTOS-enabled reference example shows how to use the Barracuda Embedded Web Server’s WebSocket server. The Barracuda Embedded Web Server source code library is included in the Barracuda App Server's GitHub repository. See the source code download page for the GitHub link.
The following screenshot shows how to use our free ESP32 web-based IDE for compiling the Barracuda Embedded Web Server websocket reference example, uploading the firmware, and how to navigate to the chat server running on the ESP32. The GitHub instructions include information on how to build for any MCU/RTOS.
Websockets are popular for embedded web servers because they provide two-way communication between the client (e.g., a web browser) and the server in real-time. This allows for dynamic, interactive, and fast communication between the two, making it an ideal solution for embedded web servers.
In comparison, traditional HTTP communication is one-way, meaning that the client can send a request to the server, but the server can only respond, it cannot initiate communication. This can be limiting in certain applications where real-time updates and interactive communication is required.
Did you know that AJAX can run over WebSockets?
Websockets provide a full-duplex communication channel, meaning that both the client and the server can send data to each other simultaneously, leading to a more interactive and responsive experience for the end user. This is why WebSockets are particularly well-suited for embedded web servers, where real-time updates and fast communication is often required.