private void onMemberConnectionHandshakeCompleted(
            Member member,
            TurmsConnection connection,
            boolean isLocalNodeClient) {
        String nodeId = member.getNodeId();
        LOGGER.info("[{}] Completed the opening handshake with the member: {}[{}:{}]",
                isLocalNodeClient
                        ? "Client"
                        : "Server",
                nodeId,
                member.getMemberHost(),
                member.getMemberPort());
        nodeIdToConnection.put(nodeId, connection);
        nodeIdToConnectionRetries.remove(nodeId);
        connectingMembers.remove(nodeId);
        updateHasConnectedToAllMembers(discoveryService.getAllKnownMembers()
                .keySet());
        for (MemberConnectionListener listener : connection.getListeners()) {
            try {
                listener.onOpeningHandshakeCompleted(member);
            } catch (Exception e) {
                LOGGER.error(
                        "Caught an error while notifying the onOpeningHandshakeCompleted listener: "
                                + listener.getClass()
                                        .getName(),
                        e);
            }
        }
    }
@param member is null when accepting a connection on the server side
turms-server-common/src/main/java/im/turms/server/common/infra/cluster/service/connection/ConnectionService.java