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.
We leveraged this repository for our company Hackathon to create an opensource websocket echo that developers were free to use since websocket.org was shutdown.
You can read more about the project and echo.websocket.events
- 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
. - Set the
SEND_SERVER_HOSTNAME
environment variable tofalse
to prevent the server from responding with its hostname before echoing the request. The client may send theX-Send-Server-Hostname
request header totrue
orfalse
to override this server-wide setting on a per-request basis.
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