Go to file
Pierre-Olivier Latour d483eb92cf Added more test cases
2012-12-29 22:44:36 -08:00
CGDWebServer Initial import 2012-12-29 22:23:49 -08:00
GCDWebServer.xcodeproj Initial import 2012-12-29 22:23:49 -08:00
.gitignore Initial commit 2012-12-29 10:22:35 -08:00
LICENSE Create LICENSE 2012-12-29 10:53:27 -08:00
main.m Added more test cases 2012-12-29 22:44:36 -08:00
README.md Update README.md 2012-12-29 22:43:08 -08:00

GCDWebServer

A lightweight GCD based HTTP 1.1 server for Mac & iOS apps written from scratch with the following goals in mind:

  • Entirely built on Grand Central Dispatch for best performance and no-hassle multithreading
  • Well designed API for easy integration and customization
  • Minimal number of source files and no dependencies on third-party source code
  • Support for streaming large HTTP bodies for requests and responses to minimize memory usage
  • Built-in parser for web forms submitted using "application/x-www-form-urlencoded" or "multipart/form-data"
  • Available under a friendly New BSD License

What's not supported (yet?):

  • Keep-alive connections
  • Authentication
  • HTTPS
  • Web forms submitted using "multipart/mixed"

Requirements:

  • OS X 10.7 or later
  • iOS 5.0 or later

Example 1: Hello World

A simple HTTP server that runs on port 8080 and returns a "Hello World" HTML page to any request:

// Create server and add default handler
GCDWebServer* webServer = [[GCDWebServer alloc] init];
[webServer addDefaultHandlerForMethod:@"GET"
                         requestClass:[GCDWebServerRequest class]
                         processBlock:^GCDWebServerResponse *(GCDWebServerRequest* request) {
  
  return [GCDWebServerDataResponse responseWithHTML:@"<html><body><p>Hello World</p></body></html>"];
  
}];

// Run server on port 8080 until SIGINT received
[webServer runWithPort:8080];

// Destroy server
[webServer release];