How to route gRPC and HTTP via the same 443 port?

We have a backend application that serves gRPC and HTTP traffic on the same port 8080 internally.
TLS termination is on Gateway level.
We are on Istio 1.2.7 for now.
Please advise how to configure VirtualService and Service to serve the routing for both.
Currently Virtual service is redirecting to 8080 to the Service with the following specs for ports

spec:
  ports:
  - name: grpc-myapp
    port: 8080
    protocol: TCP
    targetPort: 8080 

If name is prefixed here with grpc (like: name: grpc-myapp) gRPC traffic works, but http is not accepted.
If we are changing it to prefix http (like: name: http-myapp) HTTP traffic work, but gRPC is not accepted.
Not sure how to make a configuration to serve both of them at the same time

Had same issue with ChirpStack App Server and Istio 1.4. Changing port’s prefix to tcp- did help.

Also tried to enable proxying Websocket over HTTP2 with EnvoyFilter but didn’t manage to make it work.

    apiVersion: networking.istio.io/v1alpha3
    kind: EnvoyFilter
    metadata:
      name: chirpstack-app-server-http2-websocket
    spec:
      workloadSelector:
        labels:
          app: chirpstack-application-server
      configPatches:
      - applyTo: NETWORK_FILTER
        match:
          context: ANY
          listener:
            filterChain:
              filter:
                name: "envoy.http_connection_manager"
        patch:
          operation: MERGE
          value:
            typed_config:
              "@type": "type.googleapis.com/envoy.config.filter.network.http_connection_manager.v2.HttpConnectionManager"
              http2_protocol_options:
                allow_connect: true