golem v0.4.4
A lightweight extendable Go WebSocket-framework with client library.
Status
The project can be considered dead. There has been no development in recent years. It is still available on github for research and archiving purposes.
License
Golem is available under the Apache License, Version 2.0
Installation
go get github.com/trevex/golem
Client
A client is also available and heavily used in the examples. More information on how the client is used can be found in the client repository.
Simple Example
Server:
type Hello struct {
From string `json:"from"`
}
type Answer struct {
Msg string `json:"msg"`
}
func hello(conn *golem.Connection, data *Hello) {
conn.Emit("answer", &Answer{"Thanks, "+ data.From + "!"})
}
func main() {
myrouter := golem.NewRouter()
myrouter.On("hello", hello)
http.HandleFunc("/ws", myrouter.Handler())
http.ListenAndServe(":8080", nil)
}
Client:
var conn = new golem.Connection("ws://127.0.0.1:8080/ws", true);
conn.on("answer", function(data) {
console.log("Answer: "+data.msg);
});
conn.on("open", function() {
conn.emit("hello", { from: "Client" });
});
Output in client console would be Thanks, Client!
.
Documentation
The documentation is provided via godoc.
Wiki & Tutorials
More informations and insights can be found on the wiki page along with a tutorial series to learn how to use golem:
- Getting started
- Using rooms
- Building a Chat application
- Handshake authorisation using Sessions
- Using flash as WebSocket fallback
- Custom protocol using BSON
- Using an extended connection type
More Examples
Several examples are available in the example repository. To use them simply checkout the repository and make sure you installed (go get) golem before. A more detailed guide on how to use them is located in their repository.
History
- v0.1.0
- Basic API layout and documentation
- v0.2.0
- Evented communication system and routing
- Basic room implementation (lobbies renamed to rooms for clarity)
- v0.3.0
- Protocol extensions through Parsers
- Room manager for collections of rooms
- v0.4.0
- Protocol interchangable
- Several bugfixes
- Client up-to-date
- v0.4.2
- Connection type can be extended
- Close added to connection
- v0.4.3
- RoomManager emiting create- and remove-events (remove if room has insufficient users)
- v0.4.4
- RoomManager manages set of connection dependent options, see
example_chat_options.go
- Router provides OnConnect callback
- RoomManager manages set of connection dependent options, see
Special thanks
- Gary Burd (for the great WebSocket protocol implementation and insights through his examples)
- Andrew Gallant (for help on golang-nuts mailing list)
- Kortschak (for help on golang-nuts mailing list)
Contributors
TODO
- Verbose and configurable logging
- Testing