web.go 735 B

1234567891011121314151617181920212223242526272829303132333435363738
  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, webURL string) {
  21. port := "4002"
  22. mainTempl = template.Must(template.New("index.html").Parse(index_html))
  23. s = server
  24. go h.run()
  25. http.HandleFunc("/", mainHandler)
  26. http.Handle("/ws", websocket.Handler(wsHandler))
  27. fmt.Println("web listening at port ", port)
  28. http.ListenAndServe(fmt.Sprintf(":%v", port), nil)
  29. }