aboutsummaryrefslogtreecommitdiffstats
path: root/websocket/server.go
diff options
context:
space:
mode:
Diffstat (limited to 'websocket/server.go')
-rw-r--r--websocket/server.go125
1 files changed, 0 insertions, 125 deletions
diff --git a/websocket/server.go b/websocket/server.go
deleted file mode 100644
index b0658b1b4..000000000
--- a/websocket/server.go
+++ /dev/null
@@ -1,125 +0,0 @@
-package websocket
-
-import (
- "net/http"
-
- "github.com/ethereum/go-ethereum/logger"
-
- ws "code.google.com/p/go.net/websocket"
-)
-
-var wslogger = logger.NewLogger("WS")
-
-// Chat server.
-type Server struct {
- httpServ string
- pattern string
- messages []*Message
- clients map[int]*Client
- addCh chan *Client
- delCh chan *Client
- sendAllCh chan string
- doneCh chan bool
- errCh chan error
- msgFunc MsgFunc
-}
-
-// Create new chat server.
-func NewServer(pattern, httpServ string) *Server {
- clients := make(map[int]*Client)
- addCh := make(chan *Client)
- delCh := make(chan *Client)
- sendAllCh := make(chan string)
- doneCh := make(chan bool)
- errCh := make(chan error)
-
- return &Server{
- httpServ,
- pattern,
- nil,
- clients,
- addCh,
- delCh,
- sendAllCh,
- doneCh,
- errCh,
- nil,
- }
-}
-
-func (s *Server) Add(c *Client) {
- s.addCh <- c
-}
-
-func (s *Server) Del(c *Client) {
- s.delCh <- c
-}
-
-func (s *Server) SendAll(msg string) {
- s.sendAllCh <- msg
-}
-
-func (s *Server) Done() {
- s.doneCh <- true
-}
-
-func (s *Server) Err(err error) {
- s.errCh <- err
-}
-
-func (s *Server) servHTTP() {
- wslogger.Debugln("Serving http", s.httpServ)
- err := http.ListenAndServe(s.httpServ, nil)
-
- wslogger.Warnln(err)
-}
-
-func (s *Server) MessageFunc(f MsgFunc) {
- s.msgFunc = f
-}
-
-// Listen and serve.
-// It serves client connection and broadcast request.
-func (s *Server) Listen() {
- // ws handler
- onConnected := func(ws *ws.Conn) {
- defer func() {
- err := ws.Close()
- if err != nil {
- s.errCh <- err
- }
- }()
-
- client := NewClient(ws, s)
- client.onMessage = s.msgFunc
- s.Add(client)
- client.Listen()
- }
- // Disable Origin check. Request don't need to come necessarily from origin.
- http.HandleFunc(s.pattern, func(w http.ResponseWriter, req *http.Request) {
- s := ws.Server{Handler: ws.Handler(onConnected)}
- s.ServeHTTP(w, req)
- })
- wslogger.Debugln("Created handler")
-
- go s.servHTTP()
-
- for {
- select {
-
- // Add new a client
- case c := <-s.addCh:
- s.clients[c.id] = c
-
- // del a client
- case c := <-s.delCh:
- delete(s.clients, c.id)
-
- case err := <-s.errCh:
- wslogger.Debugln("Error:", err.Error())
-
- case <-s.doneCh:
- return
- }
- }
-}