فهرست منبع

update sample code, more neatly

joe 4 سال پیش
والد
کامیت
0fbb93fc97
2فایلهای تغییر یافته به همراه38 افزوده شده و 58 حذف شده
  1. 23 37
      sample/tcpws/echo_client.go
  2. 15 21
      sample/tcpws/echo_server.go

+ 23 - 37
sample/tcpws/echo_client.go

@@ -42,48 +42,34 @@ func (self *ClientSessionCb) OnHeartbeat(ses nnet.ISession) bool {
 }
 
 func start_tcp_client() {
-	clt := cpn.NewTcpClient(&nnet.DefHubConfig, &ClientSessionCb{}, &TcpProtocol{})
-	err := clt.NewConnection(SERVER_ADDR, 5)
-	if err != nil {
-		panic(err)
-	}
-	reader := bufio.NewReader(os.Stdin)
-	fmt.Println("Type what you want to send to server:")
-	for {
-		fmt.Print("->")
-		line, _ := reader.ReadString('\n')
-		line = strings.Replace(line, "\n", "", -1)
-
-		p := &EchoPacket{
-			Id:  1,
-			Msg: line,
+	__start_client(func() nnet.IHub {
+		clt := cpn.NewTcpClient(&nnet.DefHubConfig, &ClientSessionCb{}, &TcpProtocol{})
+		err := clt.NewConnection(SERVER_ADDR, 5)
+		if err != nil {
+			panic(err)
 		}
-		ses, err := clt.GetSession(5)
-		if err == nil {
-			err = ses.AWrite(p, time.Second*3)
-			if err != nil {
-				fmt.Println("ERROR:", err)
-				continue
-			}
+		return clt
+	})
+}
+
+func start_ws_client() {
+	__start_client(func() nnet.IHub {
+		clt := cpn.NewWsClient(&nnet.DefHubConfig, &ClientSessionCb{}, &WsProtocol{})
+		u := url.URL{
+			Scheme: "ws",
+			Host:   SERVER_ADDR,
+			Path:   WS_PATH,
 		}
-		if line == "quit" || line == "q" {
-			break
+		err := clt.NewConnection(u.String(), 5)
+		if err != nil {
+			panic(err)
 		}
-	} // for
-	clt.Stop()
+		return clt
+	})
 }
 
-func start_ws_client() {
-	clt := cpn.NewWsClient(&nnet.DefHubConfig, &ClientSessionCb{}, &WsProtocol{})
-	u := url.URL{
-		Scheme: "ws",
-		Host:   SERVER_ADDR,
-		Path:   WS_PATH,
-	}
-	err := clt.NewConnection(u.String(), 5)
-	if err != nil {
-		panic(err)
-	}
+func __start_client(fn func() nnet.IHub) {
+	clt := fn()
 	reader := bufio.NewReader(os.Stdin)
 	fmt.Println("Type what you want to send to server:")
 	for {

+ 15 - 21
sample/tcpws/echo_server.go

@@ -43,40 +43,34 @@ func (self *ServerSessionCb) OnHeartbeat(ses nnet.ISession) bool {
 }
 
 func start_tcp_server() {
-	listener, err := nnet.Listen(SERVER_ADDR)
-	if err != nil {
-		panic(err)
-	}
-	tcpListener, ok := listener.(*net.TCPListener)
-	if !ok {
-		panic("interface")
-	}
-	server := cpn.NewTcpServer(&nnet.DefHubConfig, &ServerSessionCb{}, &TcpProtocol{}, tcpListener)
-	go func() {
-		err = server.Start()
+	__start_server(func() nnet.IHub {
+		listener, err := nnet.Listen(SERVER_ADDR)
 		if err != nil {
 			panic(err)
 		}
-	}()
-	fmt.Println("tcp server started.")
-
-	ch := make(chan os.Signal)
-	signal.Notify(ch, syscall.SIGINT)
-
-	fmt.Println("received signal:", <-ch)
-	server.Stop()
+		tcpListener, ok := listener.(*net.TCPListener)
+		if !ok {
+			panic("interface")
+		}
+		return cpn.NewTcpServer(&nnet.DefHubConfig, &ServerSessionCb{}, &TcpProtocol{}, tcpListener)
+	})
 }
 
 func start_ws_server() {
-	server := cpn.NewWsServer(&nnet.DefHubConfig, &ServerSessionCb{}, &WsProtocol{}, SERVER_ADDR, WS_PATH, nil)
+	__start_server(func() nnet.IHub {
+		return cpn.NewWsServer(&nnet.DefHubConfig, &ServerSessionCb{}, &WsProtocol{}, SERVER_ADDR, WS_PATH, nil)
+	})
+}
 
+func __start_server(fn func() nnet.IHub) {
+	server := fn()
 	go func() {
 		err := server.Start()
 		if err != nil {
 			panic(err)
 		}
 	}()
-	fmt.Println("ws server started.")
+	fmt.Println("server started.")
 
 	ch := make(chan os.Signal)
 	signal.Notify(ch, syscall.SIGINT)