កំណត់រចនាសម្ព័ន្ធ SOCKS5 Proxy របស់ NWConnection នៅលើ iOS 17+
ភ្ជាប់ iOS 17 SOCKSv5 ProxyConfiguration ទៅ NWParameters.PrivacyContext មុនពេលបង្កើត NWConnection។
នៅលើ iOS 17 និងខ្ពស់ជាងនេះ Network.framework អាចអនុវត្ត SOCKSv5 proxy តាមរយៈបរិបទឯកជនភាព។ ភ្ជាប់បរិបទនោះទៅប៉ារ៉ាម៉ែត្រមុនពេលបង្កើតការតភ្ជាប់៖
import Network
@available(iOS 17.0, *)
func makeConnection() -> NWConnection {
let parameters = NWParameters.tls
let context = NWParameters.PrivacyContext(description: "Service route")
let endpoint = NWEndpoint.hostPort(
host: "proxy.example", port: 1080)
context.proxyConfigurations = [
ProxyConfiguration(socksv5Proxy: endpoint)
]
parameters.setPrivacyContext(context)
return NWConnection(
host: "service.example", port: 443, using: parameters)
}
អនុគមន៍នេះត្រឡប់ការតភ្ជាប់ TLS ដែលមិនទាន់ចាប់ផ្តើម។ ដំឡើងការគ្រប់គ្រងស្ថានភាពរបស់កម្មវិធី ចាប់ផ្តើមវានៅលើជួរដែលបានកំណត់ បន្ទាប់មកប្តូរពិធីការកម្មវិធីតាមផ្លូវផ្ញើ និងទទួលធម្មតារបស់វា។
proxy.example:1080 គឺជាអ្នកស្តាប់ SOCKS។ សម្រាប់ការតភ្ជាប់សេវាសាធារណៈដែលបានអនុញ្ញាត បញ្ជី proxy SOCKS5 ផ្តល់បេក្ខជនម៉ាស៊ីន និងច្រក។ service.example:443 នៅតែជាគោលដៅ។ បរិបទឯកជនភាពអនុវត្តការកំណត់ proxy របស់វាទៅការតភ្ជាប់ដែលភ្ជាប់ជាមួយបរិបទនោះ។ ការបង្កើតការតភ្ជាប់មិនពាក់ព័ន្ធជាមួយប៉ារ៉ាម៉ែត្រផ្សេងទៀតមិនទទួលមរតកការកំណត់នេះទេ។
នេះគឺជាចំណុចប្រទាក់តភ្ជាប់របស់ Network.framework។ ការជំនួស proxy របស់ URLSession ឬការកំណត់ឃ្លាំងទិន្នន័យ WKWebView កំណត់អ្នកប្រើប្រាស់ដាច់ដោយឡែកទាំងនោះ។ សម្រាប់ WebSocket ដែលបង្កើតលើ NWConnection កម្មវិធីត្រូវតែផ្តល់ជម្រើសពិធីការ WebSocket សមស្របផងដែរ។