()
| 9 | ) |
| 10 | |
| 11 | func server() { |
| 12 | queue := cellnet.NewEventQueue() |
| 13 | |
| 14 | peerIns := peer.NewGenericPeer("tcp.Acceptor", "server", peerAddress, queue) |
| 15 | |
| 16 | proc.BindProcessorHandler(peerIns, "tcp.ltv", func(ev cellnet.Event) { |
| 17 | |
| 18 | switch msg := ev.Message().(type) { |
| 19 | case *cellnet.SessionAccepted: // 接受一个连接 |
| 20 | fmt.Println("server accepted") |
| 21 | case *TestEchoACK: // 收到连接发送的消息 |
| 22 | |
| 23 | fmt.Printf("server recv %+v\n", msg) |
| 24 | |
| 25 | ack := &TestEchoACK{ |
| 26 | Msg: msg.Msg, |
| 27 | Value: msg.Value, |
| 28 | } |
| 29 | |
| 30 | // 当服务器收到的是一个rpc消息 |
| 31 | if rpcevent, ok := ev.(*rpc.RecvMsgEvent); ok { |
| 32 | |
| 33 | // 以RPC方式回应 |
| 34 | rpcevent.Reply(ack) |
| 35 | } else { |
| 36 | |
| 37 | // 收到的是普通消息,回普通消息 |
| 38 | ev.Session().Send(ack) |
| 39 | } |
| 40 | |
| 41 | case *cellnet.SessionClosed: // 连接断开 |
| 42 | fmt.Println("session closed: ", ev.Session().ID()) |
| 43 | } |
| 44 | |
| 45 | }) |
| 46 | |
| 47 | peerIns.Start() |
| 48 | |
| 49 | queue.StartLoop() |
| 50 | } |
no test coverage detected