| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485 |
- package model
- import (
- "log"
- "rocommon"
- "rocommon/socket"
- "roserver/serverproto"
- "sync"
- "time"
- )
- func init() {
- socket.RegisterProcessRPC("tcp.demo",
- func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
- b.SetTransmitter(new(socket.TCPMessageProcessor))
- b.SetHooker(socket.NewMultiTCPEventHook(
- new(socket.TCPEventHook))) //基础消息处理
- b.SetCallback(socket.QueueEventCall(userCb))
- })
- socket.RegisterProcessRPC("ws.demo",
- func(b rocommon.ProcessorRPCBundle, userCb rocommon.EventCallBack, arg ...interface{}) {
- b.SetTransmitter(new(socket.WSMessageProcessor))
- b.SetHooker(socket.NewMultiTCPEventHook(
- new(socket.TCPEventHook))) //基础消息处理
- b.SetCallback(socket.QueueEventCall(userCb))
- })
- }
- type ClientConnector interface {
- Session() rocommon.Session
- }
- func CreateClientConn(f func(rocommon.Session)) {
- var wg sync.WaitGroup
- var servicID string = ""
- var addrStr string = "127.0.0.1:21001"
- cli := socket.NewServerNode("tcpConnector", servicID, addrStr, nil)
- socket.SetProcessorRPC(cli, "tcp.demo", func(ev rocommon.ProcEvent) {
- //todo...
- switch m := ev.Msg().(type) {
- case *rocommon.SessionConnectError:
- break
- case *rocommon.SessionClosed:
- log.Println("session onclose")
- break
- case *rocommon.SessionConnected:
- //f(cli.(ClientConnector).Session())
- //模拟发送loginreq消息
- /*
- msg := &serverproto.LoginReq{
- Version: "1.0.0",
- Platform: "pc",
- OpenId: "1234567890",
- }
- ev.Session().Send(msg)
- */
- break
- case *serverproto.SCPingAck:
- log.Println("receive ping ack")
- time.Sleep(3 * time.Second)
- msg := serverproto.CSPingReq{}
- msg.OpenId = "chy1111"
- ev.Session().Send(&msg)
- break
- case *serverproto.SCLoginAck:
- log.Println("receive login ack", m)
- }
- })
- wg.Add(1)
- //设置重连时间
- //cli.(dgnet.TCPConnector).SetReconnectTime(5 * time.Second)
- cli.Start()
- //f(cli.(ClientConnector).Session())
- wg.Wait()
- }
|