1
This commit is contained in:
parent
1b5450d505
commit
a6cca0a465
@ -2,15 +2,16 @@ package main
|
|||||||
|
|
||||||
import (
|
import (
|
||||||
"net"
|
"net"
|
||||||
|
"fmt"
|
||||||
)
|
)
|
||||||
|
|
||||||
type GGListener_ struct {
|
type WSPListener_ struct {
|
||||||
listener net.Listener
|
listener net.Listener
|
||||||
}
|
}
|
||||||
|
|
||||||
var GGListener = new (GGListener_)
|
var WSPListener = new (WSPListener_)
|
||||||
|
|
||||||
func (this *GGListener_) Init() {
|
func (this *WSPListener_) Init() {
|
||||||
listener, err := net.Listen("tcp", "0.0.0.0:8888")
|
listener, err := net.Listen("tcp", "0.0.0.0:8888")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
||||||
@ -20,17 +21,54 @@ func (this *GGListener_) Init() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *GGListener_) UnInit() {
|
func (this *WSPListener_) UnInit() {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *GGListener_) accept() {
|
func (this *WSPListener_) accept() {
|
||||||
|
fmt.Println("accpet")
|
||||||
for {
|
for {
|
||||||
conn, err := this.listener.Accept()
|
conn, err := this.listener.Accept()
|
||||||
if err == nil {
|
if err == nil {
|
||||||
|
fmt.Println("connected")
|
||||||
go this.socketRead(conn)
|
go this.socketRead(conn)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *GGListener_) socketRead(conn net.Conn) {
|
/*
|
||||||
|
struct PackHead
|
||||||
|
{
|
||||||
|
unsigned short packlen;
|
||||||
|
unsigned short msgid;
|
||||||
|
unsigned int seqid;
|
||||||
|
unsigned short magic_code;
|
||||||
|
unsigned short ext_len;
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
func (this *WSPListener_) socketRead(conn net.Conn) {
|
||||||
|
buf := make([]byte, 1024 * 64)
|
||||||
|
//recvBuf := make([]byte, 1024 * 64)
|
||||||
|
offset := 0
|
||||||
|
for {
|
||||||
|
bufLen, err := conn.Read(buf)
|
||||||
|
if err == nil && bufLen > 0 {
|
||||||
|
warning := false
|
||||||
|
for bufLen - offset >= 12 {
|
||||||
|
if buf[8] == 'K' && buf[9] == 'S' {
|
||||||
|
packLen := int(buf[0]) >> 16 + int(buf[1])
|
||||||
|
if bufLen - offset < 12 + packLen {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
offset += 12 + packLen
|
||||||
|
} else {
|
||||||
|
warning = true
|
||||||
|
offset += 1
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if warning {
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -14,15 +14,16 @@ type App_ struct {
|
|||||||
|
|
||||||
var App = new (App_)
|
var App = new (App_)
|
||||||
|
|
||||||
|
|
||||||
func (this *App_) Init() {
|
func (this *App_) Init() {
|
||||||
f5.App = &this.App_
|
f5.App = &this.App_
|
||||||
f5.App.SetPkgName("imserver")
|
f5.App.SetPkgName("imserver")
|
||||||
this.App_.Init()
|
this.App_.Init()
|
||||||
|
WSPListener.Init()
|
||||||
go this.goReportServerState();
|
go this.goReportServerState();
|
||||||
}
|
}
|
||||||
|
|
||||||
func (this *App_) UnInit() {
|
func (this *App_) UnInit() {
|
||||||
|
WSPListener.UnInit()
|
||||||
this.App_.UnInit()
|
this.App_.UnInit()
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -35,7 +36,7 @@ func (this *App_) goReportServerState() {
|
|||||||
params.SetXValue("port", q5.NewXInt32(8888))
|
params.SetXValue("port", q5.NewXInt32(8888))
|
||||||
params.SetXValue("online_num", q5.NewXInt32(1))
|
params.SetXValue("online_num", q5.NewXInt32(1))
|
||||||
params.SetXValue("room_num", q5.NewXInt32(1))
|
params.SetXValue("room_num", q5.NewXInt32(1))
|
||||||
params.SetXValue("channel", q5.NewXInt32(1))
|
params.SetXValue("channel", q5.NewXInt32(0))
|
||||||
params.SetXValue("alive_count", q5.NewXInt32(1))
|
params.SetXValue("alive_count", q5.NewXInt32(1))
|
||||||
params.SetXValue("servicing", q5.NewXInt32(1))
|
params.SetXValue("servicing", q5.NewXInt32(1))
|
||||||
_, err := q5.HttpGet(
|
_, err := q5.HttpGet(
|
||||||
|
@ -6,6 +6,8 @@ require q5 v1.0.0 // indirect
|
|||||||
|
|
||||||
require f5 v1.0.0
|
require f5 v1.0.0
|
||||||
|
|
||||||
|
require mtb v1.0.0
|
||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/go-sql-driver/mysql v1.5.0 // indirect
|
github.com/go-sql-driver/mysql v1.5.0 // indirect
|
||||||
github.com/golang/protobuf v1.4.2 // indirect
|
github.com/golang/protobuf v1.4.2 // indirect
|
||||||
@ -16,3 +18,5 @@ require (
|
|||||||
replace q5 => ../../third_party/q5
|
replace q5 => ../../third_party/q5
|
||||||
|
|
||||||
replace f5 => ../../third_party/f5
|
replace f5 => ../../third_party/f5
|
||||||
|
|
||||||
|
replace mtb => ./mtb
|
@ -1,6 +1,7 @@
|
|||||||
compile:
|
compile:
|
||||||
@. /etc/profile
|
@. /etc/profile
|
||||||
|
|
||||||
|
protoc --proto_path=proto --go_out=./mtb proto/mt.proto
|
||||||
@export GOPROXY=https://goproxy.io
|
@export GOPROXY=https://goproxy.io
|
||||||
@go build -gcflags=all="-N -l" -o ../../bin/imserver/
|
@go build -gcflags=all="-N -l" -o ../../bin/imserver/
|
||||||
@echo "compile done"
|
@echo "compile done"
|
||||||
|
7
server/imserver/mtb/mt.go
Normal file
7
server/imserver/mtb/mt.go
Normal file
@ -0,0 +1,7 @@
|
|||||||
|
package mtb
|
||||||
|
|
||||||
|
import "fmt"
|
||||||
|
|
||||||
|
type Server struct {
|
||||||
|
Listen_port int
|
||||||
|
}
|
@ -31,18 +31,20 @@ class ClientNet {
|
|||||||
|
|
||||||
async init() {
|
async init() {
|
||||||
{
|
{
|
||||||
this.protoPb = await (new protobuf.Root()).load(this.protoPbFile,
|
this.protoPb = await (new protobuf.Root()).load
|
||||||
{
|
(this.protoPbFile,
|
||||||
'keepCase': true
|
{
|
||||||
}
|
'keepCase': true
|
||||||
);
|
}
|
||||||
|
);
|
||||||
}
|
}
|
||||||
{
|
{
|
||||||
this.msgIdPb = await (new protobuf.Root()).load(this.msgIdPbFile,
|
this.msgIdPb = await (new protobuf.Root()).load
|
||||||
{
|
(this.msgIdPbFile,
|
||||||
'keepCase': true
|
{
|
||||||
}
|
'keepCase': true
|
||||||
);
|
}
|
||||||
|
);
|
||||||
this.cmMsgId = this.msgIdPb.lookup('CMMessageId_e');
|
this.cmMsgId = this.msgIdPb.lookup('CMMessageId_e');
|
||||||
this.smMsgId = this.msgIdPb.lookup('SMMessageId_e');
|
this.smMsgId = this.msgIdPb.lookup('SMMessageId_e');
|
||||||
}
|
}
|
||||||
@ -152,11 +154,12 @@ class ClientNet {
|
|||||||
|
|
||||||
const msgBuf = msgType.encode(msg).finish();
|
const msgBuf = msgType.encode(msg).finish();
|
||||||
let buf = Buffer.alloc(12);
|
let buf = Buffer.alloc(12);
|
||||||
buf.writeUInt32LE(msgBuf.length, 0);
|
buf.writeUInt16LE(msgBuf.length, 0);
|
||||||
buf.writeUInt16LE(msgId, 4);
|
buf.writeUInt16LE(msgId, 2);
|
||||||
buf.writeUInt8('K'.charCodeAt(0), 6);
|
buf.writeUInt32LE(0, 4);
|
||||||
buf.writeUInt8('S'.charCodeAt(0), 7);
|
buf.writeUInt8('K'.charCodeAt(0), 8);
|
||||||
buf.writeInt32LE(0, 8);
|
buf.writeUInt8('S'.charCodeAt(0), 9);
|
||||||
|
buf.writeUInt16LE(0, 10);
|
||||||
this.conn.sendBinary(Buffer.concat([buf, msgBuf]));
|
this.conn.sendBinary(Buffer.concat([buf, msgBuf]));
|
||||||
console.log(name, msg, (Buffer.concat([buf, msgBuf])).length);
|
console.log(name, msg, (Buffer.concat([buf, msgBuf])).length);
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user