فهرست منبع

Merge branch 'release' into dev3.4.8

lianbingjie 4 سال پیش
والد
کامیت
c8ceda75c4

+ 4 - 3
src/jfw/modules/pc/server/src/config.json

@@ -1,5 +1,6 @@
 {
-  "port":":8082",
-  "redisAddr":"other=192.168.3.18:2379",
-  "redisOfflineMsgTimeout":604800
+	"port":":8082",
+ 	"redisAddr":"other=192.168.3.18:2379",
+  	"redisOfflineMsgTimeout":604800,
+  	"subscribePushRpc":"127.0.0.1:1122"
 }

+ 1 - 0
src/jfw/modules/pc/server/src/config/config.go

@@ -11,6 +11,7 @@ type Config struct {
 	Port                   string `json:"port"`
 	RedisAddr              string `json:"redisAddr"`
 	RedisOfflineMsgTimeout int    `json:"redisOfflineMsgTimeout"`
+	SubscribePushRpc       string `json:"subscribePushRpc"`
 }
 
 var SysConfig Config

+ 2 - 0
src/jfw/modules/pc/server/src/push/client.go

@@ -18,6 +18,7 @@ var (
 )
 
 func Add(code string, con *websocket.Conn) {
+	go IsOnLine(code, true)
 	lock.Lock()
 	//断开老连接
 	if v, ok := mapping[code]; ok {
@@ -36,6 +37,7 @@ func Add(code string, con *websocket.Conn) {
 }
 
 func Remove(code string) {
+	go IsOnLine(code, false)
 	lock.Lock()
 	//断开老连接
 	if v, ok := mapping[code]; ok {

+ 7 - 8
src/jfw/modules/pc/server/src/push/push.go

@@ -35,15 +35,14 @@ type (
 	}
 )
 
-func (s *Service) IsOnLine(request *string, repl *string) error {
-	lock.Lock()
-	defer lock.Unlock()
-	//断开老连接
-	if _, ok := mapping[*request]; ok {
-		*repl = "y"
-	} else {
-		*repl = "n"
+func (s *Service) AllOnLine(request *string, repl *[]string) error {
+	r := []string{}
+	lock.RLock()
+	for k, _ := range mapping {
+		r = append(r, k)
 	}
+	lock.RUnlock()
+	*repl = r
 	return nil
 }
 func (s *Service) PushMsg(request *[]byte, repl *string) error {

+ 27 - 0
src/jfw/modules/pc/server/src/push/rpccall.go

@@ -0,0 +1,27 @@
+package push
+
+import (
+	. "config"
+	"encoding/json"
+	"net/rpc"
+	"qfw/util"
+
+	"github.com/donnie4w/go-logger/logger"
+)
+
+//
+func IsOnLine(key string, flag bool) {
+	defer util.Catch()
+	var repl string
+	client, err := rpc.DialHTTP("tcp", SysConfig.SubscribePushRpc)
+	if err != nil {
+		logger.Error(err.Error())
+		return
+	}
+	defer client.Close()
+	b, _ := json.Marshal(map[string]bool{key: flag})
+	err = client.Call("Rpc.PcHelperIsOnLine", b, &repl)
+	if err != nil {
+		logger.Error(err.Error())
+	}
+}