WIP: http server implementation for Qt based on Ryan Dahl's http parser
C++ Prolog
Switch branches/tags
Nothing to show
Pull request Compare This branch is 8 commits ahead, 96 commits behind nikhilm:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
docs
examples
src
tests
.gitignore
LICENSE
README.md
TODO
qhttpserver.pro

README.md

QHttpServer

A Qt HTTP Server - because hard-core programmers write web-apps in C++ :)

It uses Ryan Dahl's HTTP Parser and is asynchronous and does not require any inheritance.

NOTE: QHttpServer is NOT fully HTTP compliant right now! DO NOT use it for anything complex

Installation

git clone https://github.com/joyent/http-parser

Requires Qt 4.

qmake && make && su -c 'make install'

To link to your projects put this in your project's qmake project file

LIBS += -lqhttpserver

Usage

Include the headers

#include <qhttpserver.h>
#include <qhttprequest.h>
#include <qhttpresponse.h>

Create a server, and connect to the signal for new requests

QHttpServer *server = new QHttpServer;
connect(server, SIGNAL(newRequest(QHttpRequest*, QHttpResponse*)),
        handler, SLOT(handle(QHttpRequest*, QHttpResponse*)));

// let's go
server->listen(8080);

In the handler, you may dispatch on routes or do whatever other things you want. See the API documentation for what information is provided about the request via the QHttpRequest object.

To send data back to the browser and end the request:

void Handler::handle(QHttpRequest *req, QHttpResponse *resp)
{
	resp->setHeader("Content-Length", 11);
	resp->writeHead(200); // everything is OK
	resp->write("Hello World");
	resp->end();
}

The server and request/response objects emit various signals and have guarantees about memory management. See the API documentation for these.