A very simple HTTP echo server with support for websockets and server-sent events (SSE).
The server is designed for testing HTTP proxies and clients. It echoes information about HTTP request headers and bodies back to the client.
- Any messages sent from a websocket client are echoed as a websocket message
- Visit
/.ws
in a browser for a basic UI to connect and send websocket messages - Request
/.sse
to receive the echo response via server-sent events - Request any other URL to receive the echo response in plain text
- The
PORT
environment variable sets the server port, which defaults to8080
- Set the
LOG_HTTP_BODY
environment variable to dump request bodies toSTDOUT
- Set the
LOG_HTTP_HEADERS
environment variable to dump request headers toSTDOUT
The examples below show a few different ways of running the server with the HTTP
server bound to a custom TCP port of 10000
.
go get -u github.com/jmalloc/echo-server/...
PORT=10000 echo-server
To run the latest version as a container:
docker run --detach -p 10000:8080 jmalloc/echo-server
Or, as a swarm service:
docker service create --publish 10000:8080 jmalloc/echo-server
The docker container can be built locally with:
make docker