HTTP/2 ស្ថិតនៅក្នុងផ្លូវរូងក្រោមដី SOCKS របស់ Go
ក្លូនការដឹកជញ្ជូន HTTP ស្តង់ដារ ជ្រើសរើសប្រូកស៊ី SOCKS និងពិនិត្យពិធីការគោលដៅដែលបានចរចាជាក់ស្តែង។
ផ្លូវរូងក្រោមដី SOCKS ដឹកការតភ្ជាប់ TCP។ Go អាចធ្វើ TLS ជាមួយគោលដៅតាមរយៈផ្លូវរូងនោះ ហើយចរចា HTTP/2 នៅទីនោះ។ ម៉ាស៊ីនមេ SOCKS ខ្លួនវាមិនចាំបាច់និយាយ HTTP/2 ទេ។
នៅក្នុងកម្មវិធីដែលរក្សាការដឹកជញ្ជូនលំនាំដើមស្តង់ដាររបស់ Go សូមក្លូនការកំណត់រចនាសម្ព័ន្ធរបស់វា ហើយជ្រើសរើសប្រូកស៊ី៖
import (
"net/http"
"net/url"
"time"
)
proxyURL := &url.URL{
Scheme: "socks5",
Host: "proxy.example:1080",
}
transport := http.DefaultTransport.(*http.Transport).Clone()
transport.Proxy = http.ProxyURL(proxyURL)
client := &http.Client{
Transport: transport,
Timeout: 30 * time.Second,
}
ប្រូកស៊ី និងគោលដៅនៅតែជាតម្លៃផ្សេងគ្នា។ ជ្រើសរើសចំណុចបញ្ចប់ SOCKS5 ពីបញ្ជីប្រូកស៊ី SOCKS5សម្រាប់តម្លៃប្រូកស៊ី; HTTP/2 នៅតែត្រូវចរចាជាមួយគោលដៅ។ ប្រើ client ដើម្បីស្នើ URL សេវាកម្ម HTTPS ពិតប្រាកដ បន្ទាប់មកបិទតួនៃការឆ្លើយតបតាមរយៈវដ្តជីវិតធម្មតារបស់កម្មវិធី។
ការដឹកជញ្ជូនលំនាំដើមស្តង់ដារគាំទ្រ HTTP/2។ ការក្លូនវារក្សាការកំណត់នោះ ខណៈដែលអនុញ្ញាតឱ្យជម្រើសប្រូកស៊ីផ្លាស់ប្តូរ។ ការអះអាងប្រភេទសន្មត់ថាកម្មវិធីមិនបានជំនួស http.DefaultTransport ដោយ RoundTripper ផ្សេងទេ។
សម្រាប់ការដឹកជញ្ជូនដែលបានសាងសង់ដោយឡែក សូមពិនិត្យការកំណត់ HTTP/2 របស់វា ជាពិសេសនៅពេលផ្តល់ទំពក់ dial ឬ TLS តាមបំណង។ Go បង្ហាញ ForceAttemptHTTP2 និងនៅក្នុងការចេញផ្សាយថ្មីៗ ការកំណត់ Protocols ច្បាស់លាស់សម្រាប់ជម្រើសទាំងនោះ។
គោលដៅនៅតែត្រូវផ្តល់ HTTP/2 តាមរយៈការចរចា TLS។ ពិនិត្យតម្លៃ Proto ឬ ProtoMajor នៃការឆ្លើយតបជោគជ័យ ដើម្បីមើលអ្វីដែលត្រូវបានប្រើ។ សំណើ HTTPS ដែលជោគជ័យតាមរយៈ SOCKS មិនបញ្ជាក់ដោយខ្លួនឯងថាពិធីការដែលបានចរចាគឺ HTTP/2 ទេ។