修改tcp消息对外只暴露clientid

This commit is contained in:
boyce
2020-02-11 14:56:47 +08:00
parent 25f6f807ef
commit b2f7b18aaa
8 changed files with 59 additions and 191 deletions

View File

@@ -1,66 +0,0 @@
package main
import (
"fmt"
"github.com/duanhf2012/origin/originnode"
"github.com/duanhf2012/origin/service"
"github.com/duanhf2012/origin/sysservice/originhttp"
"net/http"
)
type InputData struct {
A1 int
A2 int
}
type SubNet1_Service1 struct {
service.BaseService
}
func init() {
originnode.InitService(&SubNet1_Service1{})
}
//OnInit ...
func (ws *SubNet1_Service1) OnInit() error {
originhttp.Post("", ws.HTTP_UserIntegralInfo)
originhttp.Get("/aaa/bbb", ws.HTTP_Test)
originhttp.Get("/Login/bbb", ws.HTTP_UserIntegralInfo)
originhttp.SetStaticResource(originhttp.METHOD_GET, "/file/", "d:\\")
return nil
}
//OnRun ...
func (ws *SubNet1_Service1) OnRun() bool {
return false
}
//服务要对外的接口规划如下:
//RPC_MethodName(arg *DataType1, ret *DataType2) error
//如果不符合规范,在加载服务时,该函数将不会被映射,其他服务将不允能调用。
func (slf *SubNet1_Service1) RPC_Add(arg *InputData, ret *int) error {
*ret = arg.A1 + arg.A2
return nil
}
func (slf *SubNet1_Service1) HTTP_Test(request *originhttp.HttpRequest, resp *originhttp.HttpRespone) error {
var cookieList []*http.Cookie
cookieList = append(cookieList,&http.Cookie{Name: "X-Xsrftoken",Value: "df41ba54db5011e89861002324e63af81", HttpOnly: true,Domain:"urquant.net"})
resp.Redirect("https://www.urquant.net?sdaf=1",cookieList)
//redirects(&resp.Resp, &request.Req)
return nil
}
func (slf *SubNet1_Service1) HTTP_UserIntegralInfo(request *originhttp.HttpRequest, resp *originhttp.HttpRespone) error {
ret, ok := request.Query("a")
fmt.Print(ret, ok)
return nil
}

View File

@@ -1,31 +0,0 @@
package main
import (
"github.com/duanhf2012/origin/originnode"
"github.com/duanhf2012/origin/service"
)
type SubNet1_Service2 struct {
service.BaseService
}
func init() {
originnode.InitService(&SubNet1_Service2{})
}
//OnInit ...
func (ws *SubNet1_Service2) OnInit() error {
return nil
}
//OnRun ...
func (ws *SubNet1_Service2) OnRun() bool {
return false
}
func (slf *SubNet1_Service2) RPC_Sub(arg *InputData, ret *int) error {
*ret = arg.A1 - arg.A2
return nil
}

View File

@@ -1,31 +0,0 @@
package main
import (
"github.com/duanhf2012/origin/originnode"
"github.com/duanhf2012/origin/service"
)
type SubNet2_Service1 struct {
service.BaseService
}
func init() {
originnode.InitService(&SubNet2_Service1{})
}
//OnInit ...
func (ws *SubNet2_Service1) OnInit() error {
return nil
}
//OnRun ...
func (ws *SubNet2_Service1) OnRun() bool {
return false
}
func (slf *SubNet2_Service1) RPC_Multi(arg *InputData, ret *int) error {
*ret = arg.A1 * arg.A2
return nil
}

View File

@@ -1,31 +0,0 @@
package main
import (
"github.com/duanhf2012/origin/originnode"
"github.com/duanhf2012/origin/service"
)
type SubNet2_Service2 struct {
service.BaseService
}
func init() {
originnode.InitService(&SubNet2_Service2{})
}
//OnInit ...
func (ws *SubNet2_Service2) OnInit() error {
return nil
}
//OnRun ...
func (ws *SubNet2_Service2) OnRun() bool {
return false
}
func (slf *SubNet2_Service2) RPC_Div(arg *InputData, ret *int) error {
*ret = arg.A1 / arg.A2
return nil
}

View File

@@ -3,6 +3,7 @@ package logicservice
import (
"fmt"
"github.com/duanhf2012/origin/Test/msgpb"
"github.com/duanhf2012/origin/cluster"
"github.com/duanhf2012/origin/network"
"github.com/duanhf2012/origin/sysservice"
"github.com/golang/protobuf/proto"
@@ -37,60 +38,73 @@ func (ws *SubNet1_Service) OnInit() error {
return nil
}
type InputData struct {
A1 int
A2 int
}
//OnRun ...
func (ws *SubNet1_Service) OnRun() bool {
time.Sleep(time.Second * 10)
var cli network.TcpSocketClient
cli.Connect("127.0.0.1:9004")
cli.Connect("127.0.0.1:9402")
test := msgpb.Test{}
test.AssistCount = proto.Int32(343)
cli.SendMsg(110, &test)
cli.SendMsg(110, &test)
var a InputData
var rs int
a.A1 = 3
a.A2 = 4
cluster.Call("SubNet1_Service2.RPC_Sub",&a,&rs)
fmt.Print(rs)
return false
}
func (ws *SubNet1_Service) MessageHandler(pClient *network.SClient, msgtype uint16, msg proto.Message) {
fmt.Print("recv:",pClient.GetId(), "", msg,"\n")
pClient.SendMsg(msgtype,msg)
func (ws *SubNet1_Service) MessageHandler(clientid uint64, msgtype uint16, msg proto.Message) {
fmt.Print("recv:",clientid, "", msg,"\n")
sysservice.GetTcpSocketPbService("ls").SendMsg(clientid,msgtype,msg)
/*test core dump
var a map[int]int
a[33] = 3
fmt.Print(a[44])
*/
}
func (ws *SubNet1_Service) ConnEventHandler(pClient *network.SClient) {
fmt.Print("connected..",pClient.GetId(),"\n")
func (ws *SubNet1_Service) ConnEventHandler(clientid uint64) {
fmt.Print("connected..",clientid,"\n")
}
func (ws *SubNet1_Service) DisconnEventHandler(pClient *network.SClient) {
fmt.Print("disconnected..",pClient.GetId(),"\n")
func (ws *SubNet1_Service) DisconnEventHandler(clientid uint64) {
fmt.Print("disconnected..",clientid,"\n")
}
func (ws *SubNet1_Service) ExceptMessage(pClient *network.SClient, pPack *network.MsgBasePack, err error) {
fmt.Print("except..",pClient.GetId(),"",pPack,"\n")
func (ws *SubNet1_Service) ExceptMessage(clientid uint64, pPack *network.MsgBasePack, err error) {
fmt.Print("except..",clientid,"",pPack,"\n")
}
///////////////////////////
func (ws *SubNet1_Service) MessageHandler2(pClient *network.SClient, msgtype uint16, msg proto.Message) {
fmt.Print("recv:",pClient.GetId(), "", msg,"\n")
pClient.SendMsg(msgtype,msg)
func (ws *SubNet1_Service) MessageHandler2(clientid uint64, msgtype uint16, msg proto.Message) {
fmt.Print("recv:",clientid, "", msg,"\n")
//pClient.SendMsg(msgtype,msg)
sysservice.GetTcpSocketPbService("ls").SendMsg(clientid,msgtype,msg)
}
func (ws *SubNet1_Service) ConnEventHandler2(pClient *network.SClient) {
fmt.Print("connected..",pClient.GetId(),"\n")
func (ws *SubNet1_Service) ConnEventHandler2(clientid uint64) {
fmt.Print("connected..",clientid,"\n")
}
func (ws *SubNet1_Service) DisconnEventHandler2(pClient *network.SClient) {
fmt.Print("disconnected..",pClient.GetId(),"\n")
func (ws *SubNet1_Service) DisconnEventHandler2(clientid uint64) {
fmt.Print("disconnected..",clientid,"\n")
}
func (ws *SubNet1_Service) ExceptMessage2(pClient *network.SClient, pPack *network.MsgBasePack, err error) {
fmt.Print("except..",pClient.GetId(),"",pPack,"\n")
func (ws *SubNet1_Service) ExceptMessage2(clientid uint64, pPack *network.MsgBasePack, err error) {
fmt.Print("except..",clientid,"",pPack,"\n")
}

View File

@@ -37,15 +37,15 @@ func main() {
httpserver.SetHttps(ca.CertFile, ca.KeyFile)
}
pTcpService := sysservice.NewTcpSocketPbService(":9004")
pTcpService := sysservice.NewTcpSocketPbService(":9402")
pTcpService.SetServiceName("ls")
/*
pTcpService2 := sysservice.NewTcpSocketPbService(":9005")
pTcpService2.SetServiceName("lc")
*/
httpserver.SetPrintRequestTime(true)
node.SetupService(httpserver,pTcpService,pTcpService2)
node.SetupService(httpserver,pTcpService)
node.Init()
node.Start()
}

View File

@@ -115,6 +115,14 @@ func (slf *TcpSocketServer) listenServer(){
}
}
func (slf *TcpSocketServer) SendMsg(clientid uint64,packtype uint16,message proto.Message) error{
pClient := slf.mapClient.Get(clientid)
if pClient == nil {
return fmt.Errorf("clientid %d is not in connect pool.",clientid)
}
return pClient.(*SClient).SendMsg(packtype,message)
}
func (slf *SClient) listendata(){
defer func() {
@@ -205,6 +213,7 @@ func (slf *MsgBasePack) FillData(bdata []byte,datasize uint16) (uint16,bool,bool
return fillsize,false,fillhead
}
func (slf *MsgBasePack) Clear() {
}

View File

@@ -21,9 +21,9 @@ type TcpSocketPbService struct {
}
type MessageHandler func(pClient *network.SClient,msgtype uint16,msg proto.Message)
type EventHandler func(pClient *network.SClient)
type ExceptMsgHandler func(pClient *network.SClient,pPack *network.MsgBasePack,err error)
type MessageHandler func(clientid uint64,msgtype uint16,msg proto.Message)
type EventHandler func(clientid uint64)
type ExceptMsgHandler func(clientid uint64,pPack *network.MsgBasePack,err error)
@@ -88,13 +88,13 @@ func (slf *TcpSocketPbService) RegExceptMessage(exceptMsgHandler ExceptMsgHandle
func (slf *TcpSocketPbService) OnConnected(pClient *network.SClient){
if slf.connEvent!=nil {
slf.connEvent(pClient)
slf.connEvent(pClient.GetId())
}
}
func (slf *TcpSocketPbService) OnDisconnect(pClient *network.SClient){
if slf.disconnEvent!=nil {
slf.disconnEvent(pClient)
slf.disconnEvent(pClient.GetId())
}
}
@@ -106,7 +106,7 @@ func (slf *TcpSocketPbService) VerifyPackType(packtype uint16) bool{
func (slf *TcpSocketPbService) OnExceptMsg (pClient *network.SClient,pPack *network.MsgBasePack,err error){
if slf.exceptMsgHandler!=nil {
slf.exceptMsgHandler(pClient,pPack,err)
slf.exceptMsgHandler(pClient.GetId(),pPack,err)
}else{
pClient.Close()
//记录日志
@@ -124,7 +124,7 @@ func (slf *TcpSocketPbService) OnRecvMsg(pClient *network.SClient, pPack *networ
return
}
info.msgHandler(pClient,pPack.PackType(), msg.(proto.Message))
info.msgHandler(pClient.GetId(),pPack.PackType(), msg.(proto.Message))
return
}
@@ -149,4 +149,8 @@ func GetTcpSocketPbService(serviceName string) *TcpSocketPbService{
}
return iservice.(*TcpSocketPbService)
}
func (slf *TcpSocketPbService) SendMsg(clientid uint64,packtype uint16,message proto.Message) error{
return slf.tcpsocketserver.SendMsg(clientid,packtype,message)
}