A http server, implemented in C#. Originally built for the /r/dailyprogrammer hard challenge #322.

Starbeamrainbowlabs 8ce983489b Fix byte ordering & frame sending issues 1 day ago
GlidingSquirrel 8ce983489b Fix byte ordering & frame sending issues 1 day ago
GlidingSquirrelCLI 8ce983489b Fix byte ordering & frame sending issues 1 day ago
.gitignore c4d4c4c310 Inverse recondite resonator? Check! Primary diphasic multiplixer? Check and check. Lettuce? Triple check! Let's see where we end up, shall we? 2 months ago
.nuspec e6984680fc Try to get nuget packaging online, but it doesn't seem to like my dependencies. 1 week ago
GlidingSquirrel.sln 5a0e6c1738 Update version again 2 weeks ago
LICENSE 1d9564bf74 Initial commit 2 months ago
README.md b0b9882fa6 Update features & todo 1 week ago
nuget_pack.sh e6984680fc Try to get nuget packaging online, but it doesn't seem to like my dependencies. 1 week ago
package_for_nuget.sh e6984680fc Try to get nuget packaging online, but it doesn't seem to like my dependencies. 1 week ago

README.md

GlidingSquirrel

A http (and websockets!) server, implemented in C#.

Originally built for the /r/dailyprogrammer hard challenge #322.

GlidingSquirrel is currently in alpha testing! Don't use this in production unless you really know what you're doing :P

Features

  • HTTP 1.0 / 1.1 implemented so far
  • Uses C♯ 7
  • Does not have anything to do with System.Net.HttpServer whatsoever at all
  • Easily extendable (it's an abstract class)
  • Supports client requests with bodies (e.g. POST and PUT, but any http verb with a content-length will work)
  • Supports HEAD requests
  • Parses and respects the Accepts HTTP header
  • Supports keep-alive connections (HTTP 1.1 only, of course)
  • Supports Websockets (Initial implementation, version 13 only - RFC 6455, needs thorough testing - detailed bug reports welcome :D)

Todo

  • Trailing headers
  • Make logging much more flexible (it logs to the console only at the moment)
  • Give implementors of WebsocketServer a cleaner way to decide whether they want to accept a connection or not

Getting Started

A tutorial will be coming soon. For now, take a look at the HttpServer class and look at the abstract methods and their intellisense comments.

Useful Links