package profile import ( "context" "demo/deliver" "fmt" "time" ) func Req(ctx context.Context, server bool, url string, num int) { p := deliver.NewClient(deliver.ReqRep, url) var err error // msg := `hello, give me your data` msg := make([]byte, dLen) copy(msg, []byte("hello, give you this")) fmt.Println("req msg len: ", len(msg)) var t int64 var elapse int64 count := 0 for { select { case <-ctx.Done(): return default: if err = p.Send([]byte(msg)); err != nil { fmt.Printf("can't send message on push socket: %s\n", err.Error()) } else { } if buf, err := p.Recv(); err != nil { fmt.Println("recv error: ", err) } else { if t == 0 { t = time.Now().UnixNano() } elapse = time.Now().UnixNano() - t count++ if elapse > 1e9 { fmt.Printf("NODE: RECEIVED \"%d\" data len %d, use \"%d\" ns\n", count, len(buf), elapse) elapse = 0 count = 0 t = 0 } } // time.Sleep(10 * time.Millisecond) } } } func Rep(ctx context.Context, server bool, url string, num int) { c := deliver.NewServer(deliver.ReqRep, url) var msg []byte var err error buf := make([]byte, dLen) for { select { case <-ctx.Done(): return default: msg, err = c.Recv() if err != nil { fmt.Println("recv error : ", err, " msg ", msg) continue } c.Send(buf) // time.Sleep(10 * time.Millisecond) } } }