added server Launch() routine using s.dispatch()
This commit is contained in:
parent
8432c81e07
commit
427d7d06c8
38
ws/server.go
38
ws/server.go
|
@ -1,6 +1,8 @@
|
||||||
package ws
|
package ws
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"git.xdrm.io/gws/upgrader"
|
||||||
|
"net"
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.xdrm.io/gws/internal/uri/parser"
|
"git.xdrm.io/gws/internal/uri/parser"
|
||||||
)
|
)
|
||||||
|
@ -34,7 +36,9 @@ func (s *Server) Bind(uri string, c ControllerFunc) error {
|
||||||
|
|
||||||
|
|
||||||
// Launch launches the websocket server
|
// Launch launches the websocket server
|
||||||
func (s *Server) Launch(){
|
func (s *Server) Launch() error {
|
||||||
|
|
||||||
|
var err error
|
||||||
|
|
||||||
/* (1) Listen socket
|
/* (1) Listen socket
|
||||||
---------------------------------------------------------*/
|
---------------------------------------------------------*/
|
||||||
|
@ -42,9 +46,39 @@ func (s *Server) Launch(){
|
||||||
url := fmt.Sprintf("%s:%d", s.adr, s.prt)
|
url := fmt.Sprintf("%s:%d", s.adr, s.prt)
|
||||||
|
|
||||||
/* (3) Bind listen socket */
|
/* (3) Bind listen socket */
|
||||||
// lsock, err := net.Listen("tcp", )
|
s.soc, err = net.Listen("tcp", url)
|
||||||
|
if err != nil {
|
||||||
|
return fmt.Errorf("Listen socket: %s", err)
|
||||||
|
}
|
||||||
|
|
||||||
|
fmt.Printf("+ listening on %s\n", url)
|
||||||
|
|
||||||
|
|
||||||
|
/* (2) For each incoming connection (client)
|
||||||
|
---------------------------------------------------------*/
|
||||||
|
for {
|
||||||
|
|
||||||
|
// {1} Wait for connection //
|
||||||
|
sock, err := s.soc.Accept()
|
||||||
|
fmt.Printf(" + new client\n")
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf(" - error: %s\n", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// {2} Upgrade request //
|
||||||
|
upgrader, err := upgrader.Upgrade(sock)
|
||||||
|
if err != nil {
|
||||||
|
fmt.Printf(" - upgrade error: %s\n", err)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
// {3} Dispatch to controllers //
|
||||||
|
go s.dispatch(sock, upgrader)
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
|
|
||||||
|
}
|
Loading…
Reference in New Issue