mirror of
https://github.com/openimsdk/open-im-server.git
synced 2025-04-06 04:15:46 +08:00
52 lines
1.6 KiB
Go
52 lines
1.6 KiB
Go
package push
|
|
|
|
import (
|
|
"context"
|
|
pbpush "github.com/OpenIMSDK/protocol/push"
|
|
"github.com/OpenIMSDK/tools/discoveryregistry"
|
|
"github.com/openimsdk/open-im-server/v3/internal/push/offlinepush"
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/cache"
|
|
"github.com/openimsdk/open-im-server/v3/pkg/common/db/controller"
|
|
"google.golang.org/grpc"
|
|
)
|
|
|
|
type pushServer struct {
|
|
database controller.PushDatabase
|
|
disCov discoveryregistry.SvcDiscoveryRegistry
|
|
offlinePusher offlinepush.OfflinePusher
|
|
pushCh *ConsumerHandler
|
|
}
|
|
|
|
func (p pushServer) PushMsg(ctx context.Context, req *pbpush.PushMsgReq) (*pbpush.PushMsgResp, error) {
|
|
//todo reserved Interface
|
|
return nil, nil
|
|
}
|
|
|
|
func (p pushServer) DelUserPushToken(ctx context.Context,
|
|
req *pbpush.DelUserPushTokenReq) (resp *pbpush.DelUserPushTokenResp, err error) {
|
|
if err = p.database.DelFcmToken(ctx, req.UserID, int(req.PlatformID)); err != nil {
|
|
return nil, err
|
|
}
|
|
return &pbpush.DelUserPushTokenResp{}, nil
|
|
}
|
|
|
|
func Start(disCov discoveryregistry.SvcDiscoveryRegistry, server *grpc.Server) error {
|
|
rdb, err := cache.NewRedis()
|
|
if err != nil {
|
|
return err
|
|
}
|
|
cacheModel := cache.NewMsgCacheModel(rdb)
|
|
offlinePusher := offlinepush.NewOfflinePusher(cacheModel)
|
|
database := controller.NewPushDatabase(cacheModel)
|
|
|
|
consumer := NewConsumerHandler(offlinePusher, rdb, disCov)
|
|
pbpush.RegisterPushMsgServiceServer(server, &pushServer{
|
|
database: database,
|
|
disCov: disCov,
|
|
offlinePusher: offlinePusher,
|
|
pushCh: consumer,
|
|
})
|
|
go consumer.pushConsumerGroup.RegisterHandleAndConsumer(consumer)
|
|
return nil
|
|
}
|