class
XMPP::WebSocketTransport
- XMPP::WebSocketTransport
- XMPP::Transport
- IO
- Reference
- Object
Overview
RFC 7395: XMPP over WebSocket. Presents a classic XMPP byte stream to
Session while translating stream headers to
Defined in:
xmpp/transport/web_socket.crConstructors
- .new(ws : HTTP::WebSocket, domain : String, encrypted : Bool)
- .open(config : Config, url : URI | Nil = nil) : WebSocketTransport
Class Method Summary
- .open_socket(url : URI, config : Config) : HTTP::WebSocket
- .resolve_url(config : Config, url : URI | Nil = nil) : URI
Instance Method Summary
-
#close
Closes this
IO. -
#closed? : Bool
Returns
trueif thisIOis closed. -
#encrypted? : Bool
True when TLS is already handled at or below this transport, so the session must not attempt a STARTTLS upgrade.
-
#read(slice : Bytes) : Int32
Reads at most slice.size bytes from this
IOinto slice. -
#tls_socket : OpenSSL::SSL::Socket::Client | Nil
The underlying TLS socket when the transport opened one directly (XEP-0368 direct TLS).
-
#write(slice : Bytes) : Nil
Writes the contents of slice into this
IO.
Instance methods inherited from class XMPP::Transport
encrypted? : Bool
encrypted?,
supports_starttls? : Bool
supports_starttls?,
tls_socket : OpenSSL::SSL::Socket::Client | Nil
tls_socket
Constructor methods inherited from class XMPP::Transport
connect(config : Config) : Transport
connect
Class methods inherited from class XMPP::Transport
classify_outbound(data : String) : Symbol
classify_outbound,
extract_attribute(xml : String, name : String) : String | Nil
extract_attribute
Constructor Detail
Class Method Detail
Instance Method Detail
Closes this IO.
IO defines this is a no-op method, but including types may override.
Returns true if this IO is closed.
IO defines returns false, but including types may override.
True when TLS is already handled at or below this transport, so the session must not attempt a STARTTLS upgrade.
Reads at most slice.size bytes from this IO into slice.
Returns the number of bytes read, which is 0 if and only if there is no
more data to read (so checking for 0 is the way to detect end of file).
io = IO::Memory.new "hello"
slice = Bytes.new(4)
io.read(slice) # => 4
slice # => Bytes[104, 101, 108, 108]
io.read(slice) # => 1
slice # => Bytes[111, 101, 108, 108]
io.read(slice) # => 0
The underlying TLS socket when the transport opened one directly (XEP-0368 direct TLS). Nil for plaintext, STARTTLS-managed, WebSocket, and BOSH transports.
Writes the contents of slice into this IO.
io = IO::Memory.new
slice = Bytes.new(4) { |i| ('a'.ord + i).to_u8 }
io.write(slice)
io.to_s # => "abcd"