[Twisted-Python] stop/start client connections with loseConnection in ReconnectingClientFactory
Tobias Oberstein
tobias.oberstein at gmail.com
Tue Apr 2 02:07:48 MDT 2019
Am 02.04.19 um 09:50 schrieb Chris Withers:
> On 02/04/2019 08:25, Tobias Oberstein wrote:
>>>> https://github.com/crossbario/autobahn-python/blob/master/examples/twisted/wamp/basic/client_using_clientservice.py
>>>
>>>
>>> Any way to get rid of the ugly duplication between the url in line 69
>>> and the endpoint on line 72?
>>>
>>> I seem to remember that ends up happening with or without ClientService.
>>
>> I am aware, but no, it's designed like this, because WebSocket
>> requires a HTTP URL (with potentially path components, query
>> parameters etc) in the opening handshake while the _transport_ does
>> not necessarily have that.
>>
>> Autobahn allows you to run WebSocket over basically everything that is
>> a bidirectional byte pipe: TCP of course, but also Unix domain socket,
>> pipes, Tor onion services (via https://github.com/meejah/txtorcon) and
>> even serial ports!
>
> Right, but correct me if I'm wrong, my understanding is that URL stands
> for Univeral Resource Locator and URLs can encode all of the things you
WebSocket needs a _HTTP_ URL
an URL from the HTTP scheme cannot encode eg a Unix domain socket path
or a serial port
one could certainly come with with other/different non-HTTP URL schemes
.. and in some way, Autobahn WAMP machinery has sth in that direction:
eg WAMP can be run not only over WebSocket, but also RawSocket, which is
a WAMP-specific transport (above byte-level, at the framing level), that
is simpler than WebSocket, and for that we using (non-standard) URLs like
rs://<host:port>
rss://<host:port>
fwiw, WAMP is a protocol with a clear-cut, rigorous and decoupled layering:
- bidirectional reliable byte level transport (tcp, uds, pipes, ..)
- message framing (websocket, rawsocket, ..)
- serialization (json, cbor, flatbuffers, ..)
and Autobahn and Crossbar.io support _every_ combination of those layers
(dozens) to run WAMP
> describe. They certainly contain the host and port, so shouldn't there
> be a graceful way to specify a URL once and have everything that needs
> that info or a subset of it get it from there?
a (fully qualified) HTTP URL of course encodes a host and port, but that
only covers transports that have those notions
>
> (This isn't necessarily aimed at AutoBahn, seems to be something common
> in Twisted...)
things look only "simple" when leaving out details;)
anyways: this is now OT to the original issue I would think ..
>
> Chris
More information about the Twisted-Python
mailing list