iLya2IK / wchttpserver

HTTP/2+HTTP/1.1+WebSocket server written with Lazarus (Free Pascal)
GNU Lesser General Public License v2.1
57 stars 18 forks source link

alt text

wchttpserver

HTTP/2+HTTP/1.1+WebSocket server written with Lazarus (Free Pascal)

The project builds on fpWeb modules and extends them to increase functionality:

  1. There are two server modes of operation, optimized for REST and RPC architectures.
  2. Client management using cookies (saving and maintaining sessions).
  3. Saving information about clients and sessions in SQLite database.
  4. Saving information about the latest requests and saving logs in SQLite database.
  5. Multithreading preparation and execution of requests based on threads pools e.g. helpful classes to work with EventSources.
  6. Clients ranking based on clients frequency of requests.
  7. Built-in support for gzip and deflate compression methods including decompression of client-side requests.
  8. The WebSocket (RFC 6455) protocol is supported with the "permessage-deflate" extension (RFC 7692).
  9. Ability to start the server both in HTTP/2 (RFC 7540) mode and in HTTP/1.1 mode.
  10. Modified OpenSSL modules (added necessary TLS extensions) to create and maintain HTTP/2 connections.
  11. Added the ability to save the master key and a random set of client data on the server-side (necessary for debugging TLS dumps using WireShark).
  12. Working both under Windows and Linux.

What the project contains?

How to deal with the example?

How to write your own server?

Development environment

Free Pascal (v3.2.0) + Lazarus (v2.0.10)

Necessary libraries

  1. SQLite
  2. OpenSSL (v1.1.0 or higher)
  3. Zlib
  4. CommonUtils - you can download sources here

Copyrights