拿到eventtcp里
This commit is contained in:
125
business/jxstore/event/event_tcp.go
Normal file
125
business/jxstore/event/event_tcp.go
Normal file
@@ -0,0 +1,125 @@
|
|||||||
|
package event
|
||||||
|
|
||||||
|
import (
|
||||||
|
"encoding/json"
|
||||||
|
"fmt"
|
||||||
|
"git.rosy.net.cn/jx-callback/globals"
|
||||||
|
"io"
|
||||||
|
"net"
|
||||||
|
"strconv"
|
||||||
|
"sync"
|
||||||
|
)
|
||||||
|
|
||||||
|
var (
|
||||||
|
//广播频道(通道)
|
||||||
|
msgChan = make(chan string)
|
||||||
|
tcpClient = &TcpClient{}
|
||||||
|
)
|
||||||
|
|
||||||
|
type PrintMsg struct {
|
||||||
|
PrintNo string `json:"print_no"`
|
||||||
|
Data string `json:"data"`
|
||||||
|
}
|
||||||
|
|
||||||
|
//连接的客户端,吧每个客户端都放进来
|
||||||
|
type TcpClient struct {
|
||||||
|
Clients map[string][]interface{}
|
||||||
|
s *sync.RWMutex
|
||||||
|
}
|
||||||
|
|
||||||
|
func Init() {
|
||||||
|
listenTcp()
|
||||||
|
go handleTcpMessages()
|
||||||
|
}
|
||||||
|
|
||||||
|
func listenTcp() {
|
||||||
|
tcpClient.Clients = make(map[string][]interface{})
|
||||||
|
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
|
||||||
|
}
|
||||||
|
go handleConn(c)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleConn(c net.Conn) {
|
||||||
|
var (
|
||||||
|
printMsg = &PrintMsg{}
|
||||||
|
)
|
||||||
|
if c == nil {
|
||||||
|
globals.SugarLogger.Debugf("conn is nil")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
defer c.Close()
|
||||||
|
buffer := make([]byte, 1024)
|
||||||
|
for {
|
||||||
|
n, err := c.Read(buffer)
|
||||||
|
if err != nil {
|
||||||
|
if err == io.EOF {
|
||||||
|
fmt.Println("connection close")
|
||||||
|
} else {
|
||||||
|
fmt.Println("ReadString err", err)
|
||||||
|
}
|
||||||
|
return
|
||||||
|
}
|
||||||
|
//能转说明是打印信息,不能转说明是打印机的心跳或者连接
|
||||||
|
if err = json.Unmarshal(buffer[:n], &printMsg); err == nil {
|
||||||
|
//是打印信息就把信息放进chan里,后续根据信息里的printno寻找客户端连接并打印
|
||||||
|
msgChan <- string(buffer[:n])
|
||||||
|
} else {
|
||||||
|
//如果是打印机的心跳或者打印信息返回
|
||||||
|
//tcpClient.Clients[]
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func handleTcpMessages() {
|
||||||
|
for {
|
||||||
|
//读取通道中的消息
|
||||||
|
//msg := <-msgChan
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
func Hextob(str string) []byte {
|
||||||
|
slen := len(str)
|
||||||
|
bHex := make([]byte, len(str)/2)
|
||||||
|
ii := 0
|
||||||
|
for i := 0; i < len(str); i = i + 2 {
|
||||||
|
if slen != 1 {
|
||||||
|
ss := string(str[i]) + string(str[i+1])
|
||||||
|
bt, _ := strconv.ParseInt(ss, 16, 32)
|
||||||
|
bHex[ii] = byte(bt)
|
||||||
|
ii = ii + 1
|
||||||
|
slen = slen - 2
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return bHex
|
||||||
|
}
|
||||||
|
|
||||||
|
func int2h8l8(i int64) (h, l string) {
|
||||||
|
origin2 := fmt.Sprintf("%b", i)
|
||||||
|
flag := 16 - len(origin2)
|
||||||
|
for i := 0; i < flag; i++ {
|
||||||
|
origin2 = "0" + origin2
|
||||||
|
}
|
||||||
|
begin8 := origin2[:8]
|
||||||
|
end8 := origin2[8:]
|
||||||
|
r1, _ := strconv.ParseInt(begin8, 2, 32)
|
||||||
|
r2, _ := strconv.ParseInt(end8, 2, 32)
|
||||||
|
h = fmt.Sprintf("%x", r1)
|
||||||
|
l = fmt.Sprintf("%x", r2)
|
||||||
|
if len(h) < 2 {
|
||||||
|
h = "0" + h
|
||||||
|
}
|
||||||
|
if len(l) < 2 {
|
||||||
|
l = "0" + l
|
||||||
|
}
|
||||||
|
return h, l
|
||||||
|
}
|
||||||
88
main.go
88
main.go
@@ -1,15 +1,12 @@
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"encoding/hex"
|
|
||||||
"flag"
|
"flag"
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
"git.rosy.net.cn/jx-callback/business/jxstore/event"
|
||||||
"net"
|
|
||||||
"net/http"
|
"net/http"
|
||||||
_ "net/http/pprof"
|
_ "net/http/pprof"
|
||||||
"os"
|
"os"
|
||||||
"strconv"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
|
"git.rosy.net.cn/baseapi/platformapi/dingdingapi"
|
||||||
@@ -148,89 +145,8 @@ func main() {
|
|||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
if globals.IsProductEnv() {
|
if globals.IsProductEnv() {
|
||||||
l, err := net.Listen("tcp", ":8000")
|
event.Init()
|
||||||
if err != nil {
|
|
||||||
fmt.Println("listen error:", err)
|
|
||||||
return
|
|
||||||
}
|
|
||||||
for {
|
|
||||||
c, err := l.Accept()
|
|
||||||
if err != nil {
|
|
||||||
fmt.Println("accept error:", err)
|
|
||||||
break
|
|
||||||
}
|
|
||||||
go handleConn(c)
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
beego.Run()
|
beego.Run()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func handleConn(c net.Conn) {
|
|
||||||
if c == nil {
|
|
||||||
fmt.Println("conn is nil")
|
|
||||||
return
|
|
||||||
}
|
|
||||||
defer c.Close()
|
|
||||||
//reader := bufio.NewReader(c)
|
|
||||||
buffer := make([]byte, 1024)
|
|
||||||
for {
|
|
||||||
n, err := c.Read(buffer)
|
|
||||||
//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:", hex.EncodeToString(buffer[:n]))
|
|
||||||
//1e00370200ff5000011b401b594155012d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2d2dff
|
|
||||||
//data := []byte{0x1E, 0x00, 0x37, 0x02, 0x00, 0xff, 0x50, 0x00, 0x01, 0x1b, 0x40, 0x1b, 0x59, 0x41, 0x55, 0x01, 0x2d,
|
|
||||||
// 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
|
|
||||||
// 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d, 0x2d,
|
|
||||||
// 0xff}
|
|
||||||
data := "1E00C10200FF5000011B401B594155012D202D202D202D202D202D202D202D202D202D202D202D202D2D202D202D200AB2CBC3FB2020202020202020CAFDC1BF2020202020202020BDF0B6EE0AB0D7C7D0BCA620202020202031202020202020202020202031350A2D202D202D202D202D202D202D202D202D202D202D202D202D2D202D202D200A1b61021b2130D7DCBDF0B6EE3A31350A1D58021b5a000106160068747470733a2f2f7777772e62616964752e636f6d2f1b61000A0A0A1B40FF"
|
|
||||||
c.Write(Hextob(data))
|
|
||||||
fmt.Println("write data: ", data)
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
func Hextob(str string) []byte {
|
|
||||||
slen := len(str)
|
|
||||||
bHex := make([]byte, len(str)/2)
|
|
||||||
ii := 0
|
|
||||||
for i := 0; i < len(str); i = i + 2 {
|
|
||||||
if slen != 1 {
|
|
||||||
ss := string(str[i]) + string(str[i+1])
|
|
||||||
bt, _ := strconv.ParseInt(ss, 16, 32)
|
|
||||||
bHex[ii] = byte(bt)
|
|
||||||
ii = ii + 1
|
|
||||||
slen = slen - 2
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return bHex
|
|
||||||
}
|
|
||||||
|
|
||||||
func int2h8l8(i int64) (h, l string) {
|
|
||||||
origin2 := fmt.Sprintf("%b", i)
|
|
||||||
flag := 16 - len(origin2)
|
|
||||||
for i := 0; i < flag; i++ {
|
|
||||||
origin2 = "0" + origin2
|
|
||||||
}
|
|
||||||
begin8 := origin2[:8]
|
|
||||||
end8 := origin2[8:]
|
|
||||||
r1, _ := strconv.ParseInt(begin8, 2, 32)
|
|
||||||
r2, _ := strconv.ParseInt(end8, 2, 32)
|
|
||||||
h = fmt.Sprintf("%x", r1)
|
|
||||||
l = fmt.Sprintf("%x", r2)
|
|
||||||
if len(h) < 2 {
|
|
||||||
h = "0" + h
|
|
||||||
}
|
|
||||||
if len(l) < 2 {
|
|
||||||
l = "0" + l
|
|
||||||
}
|
|
||||||
return h, l
|
|
||||||
}
|
|
||||||
|
|||||||
Reference in New Issue
Block a user