Feature: add direct connect mode with zookeeper, etcd, and k8s (#1775)

* fix: fix the bug

* fix: fix the imAdmin permission and searchNoficitaion resp

* 2023 Annual Summary Reflections and Aspirations

Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>

* fix: dissmissGroup and lack of keyword bug (#1678)

* Update docker-start-all.sh

* Update env-template.yaml

* Update docker-start-all.sh

* fix openim config mongo passwd env

Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>

* fix: fix some bug

* fix: group messages sync failed.

* fix: fix the valiable name

* fix: fix the getSortedConversation api

* fix: fix the mongo search error

* fix: GroupApplicationAcceptedNotification

(cherry picked from commit 4c3c4555a3)

* fix: GroupApplicationAcceptedNotification

* fix update friends

* fix pageFindUser

* Delete .devcontainer directory

* fix find user

* Your commit message here

* feat: direct conn

* fix: direct conn message gateway array exceed length

* fix: direct conn message gateway array exceed length

* fix: direct conn cannot find name

* fix: direct conn cannot find name

* fix: direct conn cannot find name

* fix: direct conn cannot find name

* fix: direct conn cannot find name

* fix: direct conn cannot find name

* fix: direct conn cannot find name

* fix: direct conn cannot find name

* fix: direct conn cannot find name

* fix: operation id invalid

* feat: multiple address

* feat: multiple address

* feat: multiple address

* feat: multiple addresses

* feat: multiple addresses

* feat: multiple addresses

* feat: multiple addresses

* feat: multiple addresses

* feat: multiple addresses

* feat: multiple addresses

* feat: multiple addresses

* feat: multiple addresses

* feat: multiple addresses

* feat: multiple addresses

* feat: multiple addresses

* feat: multiple addresses

* feat: direct conn with multiple ports

* Update user.go

* feat: direct conn with multiple ports

* feat: remove checkServiceHealth

* feat: update fmt error

* feat: update .devcontainer

* feat: update .devcontainer

* feat: update fmt.Errorf(

---------

Signed-off-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>
Co-authored-by: luhaoling <2198702716@qq.com>
Co-authored-by: Xinwei Xiong <3293172751@qq.com>
Co-authored-by: Xinwei Xiong (cubxxw) <3293172751nss@gmail.com>
Co-authored-by: Brabem <69128477+luhaoling@users.noreply.github.com>
Co-authored-by: OpenIM Bot <124379614+kubbot@users.noreply.github.com>
Co-authored-by: OpenIM Robot <139873238+openimbot@users.noreply.github.com>
Co-authored-by: Gordon <46924906+FGadvancer@users.noreply.github.com>
Co-authored-by: withchao <993506633@qq.com>
This commit is contained in:
AndrewZuo01
2024-01-26 14:39:53 +08:00
committed by GitHub
parent 9527278239
commit 05e66e9f8d
10 changed files with 268 additions and 4 deletions
@@ -132,20 +132,40 @@ func getMsgGatewayHost(ctx context.Context) []string {
// GetConns returns the gRPC client connections to the specified service.
func (cli *K8sDR) GetConns(ctx context.Context, serviceName string, opts ...grpc.DialOption) ([]*grpc.ClientConn, error) {
// This conditional checks if the serviceName is not the OpenImMessageGatewayName.
// It seems to handle a special case for the OpenImMessageGateway.
if serviceName != config.Config.RpcRegisterName.OpenImMessageGatewayName {
// DialContext creates a client connection to the given target (serviceName) using the specified context.
// 'cli.options' are likely default or common options for all connections in this struct.
// 'opts...' allows for additional gRPC dial options to be passed and used.
conn, err := grpc.DialContext(ctx, serviceName, append(cli.options, opts...)...)
// The function returns a slice of client connections with the new connection, or an error if occurred.
return []*grpc.ClientConn{conn}, err
} else {
// This block is executed if the serviceName is OpenImMessageGatewayName.
// 'ret' will accumulate the connections to return.
var ret []*grpc.ClientConn
// getMsgGatewayHost presumably retrieves hosts for the message gateway service.
// The context is passed, likely for cancellation and timeout control.
gatewayHosts := getMsgGatewayHost(ctx)
// Iterating over the retrieved gateway hosts.
for _, host := range gatewayHosts {
// Establishes a connection to each host.
// Again, appending cli.options with any additional opts provided.
conn, err := grpc.DialContext(ctx, host, append(cli.options, opts...)...)
// If there's an error while dialing any host, the function returns immediately with the error.
if err != nil {
return nil, err
} else {
// If the connection is successful, it is added to the 'ret' slice.
ret = append(ret, conn)
}
}
// After all hosts are processed, the slice of connections is returned.
return ret, nil
}
}