/
server.go
61 lines (55 loc) · 1.36 KB
/
server.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
package main
import (
"log"
"net"
"github.com/henrylee2cn/teleport/v6/socket"
"github.com/henrylee2cn/teleport/v6/socket/example/pb"
)
//go:generate go build $GOFILE
func main() {
socket.SetNoDelay(false)
socket.SetMessageSizeLimit(512)
lis, err := net.Listen("tcp", "0.0.0.0:8000")
if err != nil {
log.Fatalf("[SVR] listen err: %v", err)
}
log.Printf("listen tcp 0.0.0.0:8000")
for {
conn, err := lis.Accept()
if err != nil {
log.Fatalf("[SVR] accept err: %v", err)
}
go func(s socket.Socket) {
log.Printf("accept %s", s.ID())
defer s.Close()
var pbTest = new(pb.PbTest)
for {
// read request
var message = socket.GetMessage(socket.WithNewBody(
func(header socket.Header) interface{} {
*pbTest = pb.PbTest{}
return pbTest
}),
)
err = s.ReadMessage(message)
if err != nil {
log.Printf("[SVR] read request err: %v", err)
return
// } else {
// log.Printf("[SVR] read request: %s", message.String())
}
// write response
pbTest.A = pbTest.A + pbTest.B
pbTest.B = pbTest.A - pbTest.B*2
message.SetBody(pbTest)
err = s.WriteMessage(message)
if err != nil {
log.Printf("[SVR] write response err: %v", err)
// } else {
// log.Printf("[SVR] write response: %s", message.String())
}
socket.PutMessage(message)
}
}(socket.GetSocket(conn))
}
}