Падключэнне Autobahn Twisted WSS праз HTTP-праксі
Дазвольце connectWS узгадняць канцавы пункт праксі і пазнейшы TLS прызначэння замест адкрыцця прамога канцавога пункта побач з фабрыкай, якая ўлічвае праксі.
Канцавы пункт Twisted выконвае TCP-злучэнне. Фабрыка WebSocket, настроеная на перамовы з праксі, усё яшчэ патрабуе гэтага канцавога пункта для злучэння з пасрэднікам.
Для існуючай праграмы Autobahn, якая выкарыстоўвае стандартны памочнік:
from autobahn.twisted.websocket import WebSocketClientFactory, connectWS
from twisted.internet import ssl
factory = WebSocketClientFactory(
'wss://events.example/channel',
proxy={'host': 'proxy.example', 'port': 8080},
)
factory.protocol = ApplicationProtocol
connector = connectWS(
factory,
contextFactory=ssl.optionsForClientTLS('events.example'),
timeout=10,
)
ApplicationProtocol — гэта існуючы клас пратаколу WebSocket праграмы. Трымайце рэактар і ачыстку злучэння ў межах жыццёвага цыклу гэтай праграмы. Для публічнай службы WSS, дазволенай праз публічнага пасрэдніка, спіс HTTP-праксі дае кандыдатаў для хаста і порта праксі фабрыкі.
Для фабрыкі, настроенай на праксі, connectWS злучае TCP з праксі і захоўвае кантэкст TLS прызначэння для пазнейшага бяспечнага злучэння. Ён спачатку не агортвае звычайнае злучэнне HTTP-праксі ў TLS прызначэння.
Уласная кампазіцыя HostnameEndpoint і ClientService павінна захоўваць тое ж раздзяленне: спачатку злучыцца з праксі, потым дазволіць настроенай фабрыцы весці перамовы з мэтай і ўсталяваць патрэбны TLS. Злучэнне канцавога пункта напрамую з events.example, калі яго фабрыка чакае размову праз праксі, змешвае гэтыя ролі.
URL WebSocket застаецца сапраўдным прызначэннем службы. Яго імя хаста таксама дае ідэнтычнасць TLS; замена яго імем хаста праксі не наладжвае патрэбную бяспечную службу.