||vor 5 Jahren|
|public||vor 5 Jahren|
|.gitignore||vor 5 Jahren|
|LICENSE||vor 5 Jahren|
|README.md||vor 5 Jahren|
|chatserver-http.go||vor 5 Jahren|
|chatserver-telnet.go||vor 5 Jahren|
|chatserver.go||vor 5 Jahren|
|config.sample.yml||vor 5 Jahren|
Rudimentary go chat server as a fun project.
git clone https://git.coolaj86.com/coolaj86/chat.go.git go get gopkg.in/yaml.v2 go get github.com/emicklei/go-restful
Note: I also copied some code directly from https://github.com/polvi/sni/blob/master/sni.go
Start the server
go run -race chatserver*.go -conf ./config.yml
See sample config file at
You can connect multiple clients.
telnet localhost 4080
You can also use HTTP.
The API docs and examples can be seen at http://localhost:4080
I've understood theoretical principles of Go for a long time and I've always loved it. However, most of that came from watching Go Tech Talks and going to meetups.
This is my first Go project and my primary goal was to learn how to use Go for the kinds of things that I'm personally interested in while also satisfying a mix of the requirements and optional add-ons, and show you that I know how to write code and learn.
- Attention to Detail
- Good coding style
This is my first Go project so I was learning as I went and trying different approaches. As a result my code style is inconsistent and probably does some things the wrong way (especially confusing since I probably did it the right way in other places).
- Awesome telnet server
- Multiple clients can connect
- Messages are relayed to all clients
- Includes timestamp, name of client
- Config file for port
- HTTP API
- Post message
- List messages
- Serve Docs
- Working curl examples
- Multiplex the same port (because I wanted to learn)
- E-mail "magic link" authentication (minus the link since it's localhost)
I don't think these things would be difficult to add, but I was having fun learning lots of other things and I figured Some of these things I didn't implement
- local log file
- Listening IP config
- UI for HTTP API