aboutsummaryrefslogtreecommitdiff
path: root/README.md
diff options
context:
space:
mode:
authorJarno Elonen <elonen@iki.fi>2015-07-04 20:42:34 +0300
committerJarno Elonen <elonen@iki.fi>2015-07-04 20:42:34 +0300
commit7cb7c97c057d57ce4147b1ae0bec82c092f2851a (patch)
treec27c492664807cb7cdd403f5ff33c45489a315e6 /README.md
parent117511353f47b1c6a0e61d4c1aa7513eef0a0e0c (diff)
downloadnanohttpd-7cb7c97c057d57ce4147b1ae0bec82c092f2851a.tar.gz
Some work on README
Diffstat (limited to 'README.md')
-rw-r--r--README.md55
1 files changed, 31 insertions, 24 deletions
diff --git a/README.md b/README.md
index 8dc4816..248fa0e 100644
--- a/README.md
+++ b/README.md
@@ -1,16 +1,20 @@
-## What is "nanohttpd"?
+## NanoHTTPD – a tiny web server in Java
-*NanoHttpd* is a light-weight HTTP server designed for embedding in other applications.
+*NanoHTTPD* is a light-weight HTTP server designed for embedding in other applications, released under a Modified BSD licence.
-*NanoHttpd* has been released under a Modified BSD licence.
+It is being developed at Github and uses Apache Maven for builds & unit testing:
-Build status: [![Build Status](https://api.travis-ci.org/NanoHttpd/nanohttpd.png)](https://travis-ci.org/NanoHttpd/nanohttpd)
+ * Build status: [![Build Status](https://api.travis-ci.org/NanoHttpd/nanohttpd.png)](https://travis-ci.org/NanoHttpd/nanohttpd)
+ * Coverage Status: [![Coverage Status](https://coveralls.io/repos/NanoHttpd/nanohttpd/badge.svg)](https://coveralls.io/r/NanoHttpd/nanohttpd)
+ * Current central released version: [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.nanohttpd/nanohttpd/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.nanohttpd/nanohttpd)
-Coverage Status: [![Coverage Status](https://coveralls.io/repos/NanoHttpd/nanohttpd/badge.svg)](https://coveralls.io/r/NanoHttpd/nanohttpd)
+## Getting started
-Current central released version: [![Maven Central](https://maven-badges.herokuapp.com/maven-central/com.nanohttpd/nanohttpd/badge.svg)](https://maven-badges.herokuapp.com/maven-central/com.nanohttpd/nanohttpd)
+*(TODO: list of commands to fetch from Maven, build and run Webserver and/or HelloServer here?)*
-We are currently in the process of stabalising nanohttpd from the many pull requests and feature requests that were integrated over the last few months. The next release will come soon, and there will not be any more "intended" major changes before the next release. If you want to use the bleeding edge version of nanohttpd, you can get it from sonatype:
+## Status
+
+We are currently in the process of stabilizing NanoHttpd from the many pull requests and feature requests that were integrated over the last few months. The next release will come soon, and there will not be any more "intended" major changes before the next release. If you want to use the bleeding edge version, you can clone it from Github, or get it from sonatype.org:
<dependencies>
<dependency>
@@ -32,36 +36,39 @@ We are currently in the process of stabalising nanohttpd from the many pull requ
The other artifacts are also available there.
-## Core Features
+The project currently consist of four parts:
+
+ * `/core` – Fully functional HTTP(s) server consisting of one (1) Java file, ready to be customized/inherited for your own project
+
+ * `/samples` – Simple examples on how to customize NanoHTTPD. See *HelloServer.java* for a killer app that greets you enthusiastically!
+
+ * `/websocket` – Websocket implementation, also in a single Java file. Depends on core.
+
+ * `/webserver` – Standalone file server. Run & enjoy. A popular use seems to be serving files out off an Android device.
+
+## Features of Core
* Only one Java file, providing HTTP 1.1 support.
-* Two "flavours" - one at "current" standards and one strictly Java 1.1 compatible.
-* Released as open source, free software, under a Modified BSD licence.
-* No fixed config files, logging, authorization etc. (Implement by yourself if you need them.)
-* Experimental support for SSL (see the 'ssl-support' branch in git)
+* No fixed config files, logging, authorization etc. (Implement by yourself if you need them. Errors are passed to java.util.logging, though.)
+* Support for HTTPS (SSL)
* Basic support for cookies
* Supports parameter parsing of GET and POST methods.
-* Rudimentary PUT support (added in 1.25).
-* Support for HEAD and DELETE requests.
-* Supports single and multi-value parameters (w/ a helper method) if needed.
-* Supports file upload (since version 1.2, 2010) with minimal memory overhead.
+* Some built-in support for HEAD, POST and DELETE requests. You can easily implement/customize any HTTP method, though.
+* Supports file upload. Uses memory for small uploads, temp files for large ones.
* Never caches anything.
-* Doesn't limit bandwidth, request time or simultaneous connections.
+* Does not limit bandwidth, request time or simultaneous connections by default.
* All header names are converted to lower case so they don't vary between browsers/clients.
-* Very low memory overhead when processing even the largest of requests.
-* Temp file usage and threading model are easily customized.
* Persistent connections (Connection "keep-alive") support allowing multiple requests to be served over a single socket connection.
## Websocket Support
* Tested on Firefox, Chrome and IE.
## Webserver Features
+* Default code serves files and shows (prints on console) all HTTP parameters and headers.
* Supports both dynamic content and file serving.
-* Default code serves files and shows all HTTP parameters and headers.
-* File server supports directory listing, ```index.html``` and ```index.htm```.
-* File server supports partial content (streaming).
+* File server supports directory listing, `index.html` and `index.htm`.
+* File server supports partial content (streaming & continue download).
* File server supports ETags.
-* File server does the 301 redirection trick for directories without ```/```.
-* File server supports simple skipping for files (continue download).
+* File server does the 301 redirection trick for directories without `/`.
* File server serves also very long files without memory overhead.
* Contains a built-in list of most common MIME types.
* Runtime extension support (extensions that serve particular MIME types) - example extension that serves Markdown formatted files. Simply including an extension JAR in the webserver classpath is enough for the extension to be loaded.