You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
3.4 KiB
150 lines
3.4 KiB
/**
|
|
* Created by GoLand.
|
|
* User: link1st
|
|
* Date: 2019-08-03
|
|
* Time: 16:43
|
|
*/
|
|
|
|
package grpcclient
|
|
|
|
import (
|
|
"context"
|
|
"errors"
|
|
"fmt"
|
|
"google.golang.org/grpc"
|
|
"gowebsocket/common"
|
|
"gowebsocket/models"
|
|
"gowebsocket/protobuf"
|
|
"time"
|
|
)
|
|
|
|
// rpc client
|
|
// 给全体用户发送消息
|
|
// link::https://github.com/grpc/grpc-go/blob/master/examples/helloworld/greeter_client/main.go
|
|
func SendMsgAll(server *models.Server, seq string, appId uint32, userId string, cmd string, message string) (sendMsgId string, err error) {
|
|
// Set up a connection to the server.
|
|
conn, err := grpc.Dial(server.String(), grpc.WithInsecure())
|
|
if err != nil {
|
|
fmt.Println("连接失败", server.String())
|
|
|
|
return
|
|
}
|
|
defer conn.Close()
|
|
|
|
c := protobuf.NewAccServerClient(conn)
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
|
defer cancel()
|
|
|
|
req := protobuf.SendMsgAllReq{
|
|
Seq: seq,
|
|
AppId: appId,
|
|
UserId: userId,
|
|
Cms: cmd,
|
|
Msg: message,
|
|
}
|
|
rsp, err := c.SendMsgAll(ctx, &req)
|
|
if err != nil {
|
|
fmt.Println("给全体用户发送消息", err)
|
|
|
|
return
|
|
}
|
|
|
|
if rsp.GetRetCode() != common.OK {
|
|
fmt.Println("给全体用户发送消息", rsp.String())
|
|
err = errors.New(fmt.Sprintf("发送消息失败 code:%d", rsp.GetRetCode()))
|
|
|
|
return
|
|
}
|
|
|
|
sendMsgId = rsp.GetSendMsgId()
|
|
fmt.Println("给全体用户发送消息 成功:", sendMsgId)
|
|
|
|
return
|
|
}
|
|
|
|
// 获取用户列表
|
|
// link::https://github.com/grpc/grpc-go/blob/master/examples/helloworld/greeter_client/main.go
|
|
func GetUserList(server *models.Server, appId uint32) (userIds []string, err error) {
|
|
userIds = make([]string, 0)
|
|
|
|
conn, err := grpc.Dial(server.String(), grpc.WithInsecure())
|
|
if err != nil {
|
|
fmt.Println("连接失败", server.String())
|
|
|
|
return
|
|
}
|
|
defer conn.Close()
|
|
|
|
c := protobuf.NewAccServerClient(conn)
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
|
defer cancel()
|
|
|
|
req := protobuf.GetUserListReq{
|
|
AppId: appId,
|
|
}
|
|
rsp, err := c.GetUserList(ctx, &req)
|
|
if err != nil {
|
|
fmt.Println("获取用户列表 发送请求错误:", err)
|
|
|
|
return
|
|
}
|
|
|
|
if rsp.GetRetCode() != common.OK {
|
|
fmt.Println("获取用户列表 返回码错误:", rsp.String())
|
|
err = errors.New(fmt.Sprintf("发送消息失败 code:%d", rsp.GetRetCode()))
|
|
|
|
return
|
|
}
|
|
|
|
userIds = rsp.GetUserId()
|
|
fmt.Println("获取用户列表 成功:", userIds)
|
|
|
|
return
|
|
}
|
|
|
|
// rpc client
|
|
// 发送消息
|
|
// link::https://github.com/grpc/grpc-go/blob/master/examples/helloworld/greeter_client/main.go
|
|
func SendMsg(server *models.Server, seq string, appId uint32, userId string, cmd string, msgType string, message string) (sendMsgId string, err error) {
|
|
// Set up a connection to the server.
|
|
conn, err := grpc.Dial(server.String(), grpc.WithInsecure())
|
|
if err != nil {
|
|
fmt.Println("连接失败", server.String())
|
|
|
|
return
|
|
}
|
|
defer conn.Close()
|
|
|
|
c := protobuf.NewAccServerClient(conn)
|
|
ctx, cancel := context.WithTimeout(context.Background(), time.Second)
|
|
defer cancel()
|
|
|
|
req := protobuf.SendMsgReq{
|
|
Seq: seq,
|
|
AppId: appId,
|
|
UserId: userId,
|
|
Cms: cmd,
|
|
Type: msgType,
|
|
Msg: message,
|
|
IsLocal: false,
|
|
}
|
|
rsp, err := c.SendMsg(ctx, &req)
|
|
if err != nil {
|
|
fmt.Println("发送消息", err)
|
|
|
|
return
|
|
}
|
|
|
|
if rsp.GetRetCode() != common.OK {
|
|
fmt.Println("发送消息", rsp.String())
|
|
err = errors.New(fmt.Sprintf("发送消息失败 code:%d", rsp.GetRetCode()))
|
|
|
|
return
|
|
}
|
|
|
|
sendMsgId = rsp.GetSendMsgId()
|
|
fmt.Println("发送消息 成功:", sendMsgId)
|
|
|
|
return
|
|
}
|