នាំ WebSocket របស់ URLSession ឆ្លងកាត់ SOCKS5 នៅលើ iOS 17+
កំណត់រចនាសម្ព័ន្ធ URLSessionWebSocketTask តាមរយៈ SOCKSv5 proxy កម្រិតសម័យនៅលើ iOS 17 ឬថ្មីជាងនេះ ហើយបំបែកការនាំផ្លូវចេញពីការឌិគ្រីប WSS។
សំណើ HTTPS ធម្មតារបស់កម្មវិធី iOS អាចបង្ហាញនៅក្នុង proxy ដោះស្រាយកំហុស ខណៈដែលចរាចរណ៍ WebSocket របស់វាបាត់។ សម្គាល់ជាមុននូវការដឹកជញ្ជូន WebSocket៖ URLSessionWebSocketTask អាចប្រើការកំណត់ proxy កម្រិតសម័យ ចំណែកបណ្ណាល័យដែលបើក socket ដោយខ្លួនឯងត្រូវការការរួមបញ្ចូលដែលគាំទ្រដោយខ្លួនឯង។ សម្រាប់ការតភ្ជាប់ Network.framework ដើមនៅលើ iOS 17+ សូមកំណត់ បរិបទ proxy ផ្ទាល់របស់ NWConnection។
នៅលើ iOS 17 ឬថ្មីជាងនេះ បង្កើតសម័យជាមួយ SOCKSv5 proxy ច្បាស់លាស់៖
import Foundation
import Network
@available(iOS 17.0, *)
func makeDebugSession() -> URLSession {
let configuration = URLSessionConfiguration.default
let endpoint = NWEndpoint.hostPort(
host: "192.0.2.10", port: 8889)
configuration.proxyConfigurations = [
ProxyConfiguration(socksv5Proxy: endpoint)
]
return URLSession(configuration: configuration)
}ជំនួសអាសយដ្ឋាន និងច្រកនៃឯកសារជាមួយអ្នកស្តាប់ SOCKS ដែលអាចទៅដល់បាននៃ proxy ដោះស្រាយកំហុសដែលមានស្រាប់។ បើកអ្នកស្តាប់នោះនៅក្នុងកម្មវិធី proxy។ អ្នកស្តាប់ HTTP របស់វាអាចនៅលើច្រកផ្សេង។
បង្កើត webSocketTask ពីសម័យដែលបានត្រឡប់មកវិញ។ កិច្ចការដែលបង្កើតតាមរយៈ URLSession ផ្សេងមិនទទួលមរតកការជំនួសរបស់សម័យនេះទេ។ អារេ proxyConfigurations ទទេប្រើលំនាំដើមរបស់ប្រព័ន្ធ។ វាមិនមែនជាការជ្រើសរើសផ្លូវផ្ទាល់ដោយច្បាស់លាស់ទេ។
ភាពអាចទៅដល់ និងសារដែលអានបានគឺជាដំណាក់កាលដាច់ដោយឡែក
ទូរស័ព្ទរូបវន្តត្រូវការអាសយដ្ឋានដែលទៅដល់កុំព្យូទ័រដោះស្រាយកំហុស។ នៅលើទូរស័ព្ទនោះ 127.0.0.1 សំដៅលើទូរស័ព្ទខ្លួនឯង។ ពិនិត្យចំណុចប្រទាក់របស់អ្នកស្តាប់ និងការចូលប្រើរបស់អតិថិជនដែល proxy អនុញ្ញាត នៅពេលការតភ្ជាប់មិនដែលទៅដល់ទីនោះ។
ផ្លូវ SOCKS ដឹកការតភ្ជាប់។ ការអានខ្លឹមសារ wss ត្រូវការបន្ថែមការកំណត់ពិនិត្យ TLS របស់ឧបករណ៍ដោះស្រាយកំហុស និងការជឿជាក់សមស្របនៅលើឧបករណ៍។ ការខ្ទាស់វិញ្ញាបនបត្រ ឬការអនុវត្ត TLS ដាច់ដោយឡែកអាចរារាំងការពិនិត្យនោះ ទោះបីចរាចរណ៍ទៅដល់អ្នកស្តាប់ក៏ដោយ។
រកមើលការផ្លាស់ប្តូរ WebSocket និងសារនានាបន្ទាប់ពីការតភ្ជាប់ត្រូវបានបង្កើត។ ការឃើញតែសំណើស្ទង់មតិមួយពីកម្មវិធី Socket.IO មិនមែនជាភស្តុតាងថាការដឹកជញ្ជូន WebSocket ក្រោយមករបស់វាបានប្រើផ្លូវដូចគ្នាទេ។ រក្សាការកំណត់ដោះស្រាយកំហុសច្បាស់លាស់នេះក្នុងបរិស្ថានអភិវឌ្ឍន៍ដែលកម្មវិធីបានបម្រុងទុក។