code: def select_subprotocol(
          self,
          client_subprotocols: Sequence[Subprotocol],
          server_subprotocols: Sequence[Subprotocol],
      ) -> Optional[Subprotocol]:
          
          if self._select_subprotocol is not None:
              return self._select_subprotocol(client_subprotocols, server_subprotocols)
  
          subprotocols = set(client_subprotocols) & set(server_subprotocols)
          if not subprotocols:
              return None
          priority = lambda p: (
              client_subprotocols.index(p) + server_subprotocols.index(p)
          )
          return sorted(subprotocols, key=priority)[0]
docs: Pick a subprotocol among those offered by the client.
  
          If several subprotocols are supported by the client and the server,
          the default implementation selects the preferred subprotocols by
          giving equal value to the priorities of the client and the server.
  
          If no subprotocols are supported by the client and the server, it
          proceeds without a subprotocol.
  
          This is unlikely to be the most useful implementation in practice, as
          many servers providing a subprotocol will require that the client uses
          that subprotocol. Such rules can be implemented in a subclass.
  
          This method may be overridden by passing a ``select_subprotocol``
          argument to the :class:`WebSocketServerProtocol` constructor or the
          :func:`serve` function.