70 lines
1.3 KiB
Go
70 lines
1.3 KiB
Go
package controllers
|
||
|
||
import (
|
||
"bufio"
|
||
"fmt"
|
||
"git.rosy.net.cn/baseapi/utils"
|
||
"git.rosy.net.cn/jx-callback/globals"
|
||
beego "github.com/astaxie/beego/server/web"
|
||
"io"
|
||
"net"
|
||
)
|
||
|
||
type PrintController struct {
|
||
beego.Controller
|
||
}
|
||
|
||
type CallBackPrint struct {
|
||
Data string `json:"data"`
|
||
Code string `json:"code"`
|
||
}
|
||
|
||
func (c *PrintController) Msg() {
|
||
//if c.Ctx.Input.Method() == http.MethodPost {
|
||
l, err := net.Listen("tcp", ":8000")
|
||
if err != nil {
|
||
fmt.Println("listen error:", err)
|
||
return
|
||
}
|
||
for {
|
||
c, err := l.Accept()
|
||
if err != nil {
|
||
fmt.Println("accept error:", err)
|
||
break
|
||
}
|
||
globals.SugarLogger.Debugf("tcp socket:", utils.Format4Output(c, true))
|
||
go handleConn(c)
|
||
}
|
||
callBackPrint := &CallBackPrint{}
|
||
globals.SugarLogger.Debugf("print callback callbackResponse:%s", utils.Format4Output(c.Ctx.Request, true))
|
||
c.Data["json"] = callBackPrint
|
||
c.ServeJSON()
|
||
//} else {
|
||
// c.Abort("404")
|
||
//}
|
||
}
|
||
|
||
func handleConn(c net.Conn) {
|
||
if c == nil {
|
||
fmt.Println("conn is nil")
|
||
return
|
||
}
|
||
defer c.Close()
|
||
reader := bufio.NewReader(c)
|
||
for {
|
||
//ReadString阻塞,直到读到\n
|
||
msg, err := reader.ReadString('\n')
|
||
if err != nil {
|
||
if err == io.EOF {
|
||
fmt.Println("connection close")
|
||
} else {
|
||
fmt.Println("ReadString err", err)
|
||
}
|
||
return
|
||
}
|
||
fmt.Println("read data:", msg)
|
||
b := []byte("ok")
|
||
c.Write(b)
|
||
}
|
||
}
|