web.go 714 B

12345678910111213141516171819202122232425262728293031323334353637
  1. package web
  2. import (
  3. "code.google.com/p/go.net/websocket"
  4. "fmt"
  5. "github.com/coreos/go-raft"
  6. "html/template"
  7. "net/http"
  8. )
  9. var s *raft.Server
  10. var mainTempl *template.Template
  11. type MainPage struct {
  12. Leader string
  13. Address string
  14. }
  15. func mainHandler(c http.ResponseWriter, req *http.Request) {
  16. p := &MainPage{Leader: s.Leader(),
  17. Address: s.Name()}
  18. mainTempl.Execute(c, p)
  19. }
  20. func Start(server *raft.Server, port int) {
  21. mainTempl = template.Must(template.New("index.html").Parse(index_html))
  22. s = server
  23. go h.run()
  24. http.HandleFunc("/", mainHandler)
  25. http.Handle("/ws", websocket.Handler(wsHandler))
  26. fmt.Println("web listening at port ", port)
  27. http.ListenAndServe(fmt.Sprintf(":%v", port), nil)
  28. }