code: func strSelectProtocol(h string, check func(string) bool) (ret string, ok bool) {
  	ok = httphead.ScanTokens(strToBytes(h), func(v []byte) bool {
  		if check(btsToString(v)) {
  			ret = string(v)
  			return false
  		}
  		return true
  	})
  	return
  }
docs: // The request MAY include a header field with the name
  // |Sec-WebSocket-Protocol|.  If present, this value indicates one or more
  // comma-separated subprotocol the client wishes to speak, ordered by
  // preference.  The elements that comprise this value MUST be non-empty strings
  // with characters in the range U+0021 to U+007E not including separator
  // characters as defined in [RFC2616] and MUST all be unique strings.  The ABNF
  // for the value of this header field is 1#token, where the definitions of
  // constructs and rules are as given in [RFC2616].