代码拉取完成,页面将自动刷新
package main
import (
"context"
"net"
"runtime"
"github.com/leesper/holmes"
"github.com/leesper/tao"
"github.com/leesper/tao/examples/pingpong"
)
// PingPongServer defines pingpong server.
type PingPongServer struct {
*tao.Server
}
// NewPingPongServer returns PingPongServer.
func NewPingPongServer() *PingPongServer {
onConnect := tao.OnConnectOption(func(conn tao.WriteCloser) bool {
holmes.Infoln("on connect")
return true
})
onError := tao.OnErrorOption(func(conn tao.WriteCloser) {
holmes.Infoln("on error")
})
onClose := tao.OnCloseOption(func(conn tao.WriteCloser) {
holmes.Infoln("closing pingpong client")
})
return &PingPongServer{
tao.NewServer(onConnect, onError, onClose),
}
}
func main() {
runtime.GOMAXPROCS(runtime.NumCPU())
defer holmes.Start().Stop()
tao.MonitorOn(12345)
tao.Register(pingpong.PingPontMessage, pingpong.DeserializeMessage, ProcessPingPongMessage)
l, err := net.Listen("tcp", ":12346")
if err != nil {
holmes.Fatalln("listen error", err)
}
server := NewPingPongServer()
server.Start(l)
}
// ProcessPingPongMessage handles business logic.
func ProcessPingPongMessage(ctx context.Context, conn tao.WriteCloser) {
ping := tao.MessageFromContext(ctx).(pingpong.Message)
holmes.Infoln(ping.Info)
rsp := pingpong.Message{
Info: "pong",
}
conn.Write(rsp)
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。