WebSocket Dialer (Client).
The WebSocket Protocol (https://tools.ietf.org/html/rfc6455) is a message-based protocol over HTTP, this allows it to leverage on authentication, cookies, proxies and SSL/TLS.
Although it uses the HTTP dialer, it's not a subclass and thus not all HTTP features are exposed as the WebSocket has strict requirements that must be respected.
If the proxy is NULL
(default), then the system proxy will be used. On UNIX that's the environment variable http_proxy
(or 'all_proxy
') is used if the given address doesn't match no_proxy
patterns. To disable the proxy use an empty string. If provided, the proxy must be one of the following protocols:
- http://username:password@proxyserver:port - http://username@proxyserver:port - http://proxyserver:port - http://proxyserver (default port 1080) - socks5://username:password@proxyserver:port (SOCKSv5) - socks5h://username@proxyserver:port (let socks server to resolve domain) - socks5://proxyserver:port - socks5://proxyserver (default port 1080) - socks4a://proxyserver:port (SOCKSv4 and let socks server to resolve domain) - socks4://proxyserver:port (SOCKSv4)
⇒ Efl.Loop_Consumer (class) ⇒ Efl.Object (class)
address_dial (get, set) protected set
[Overridden from Efl.Net.Dialer]
Returns the address given to Efl.Net.Dialer.dial.
const char *efl_net_dialer_address_dial_get(const Eo *obj); void efl_net_dialer_address_dial_set(Eo *obj, const char *address);
address_local (get, set) protected set
[Overridden from Efl.Net.Socket]
The local address, similar to getsockname().
const char *efl_net_socket_address_local_get(const Eo *obj); void efl_net_socket_address_local_set(Eo *obj, const char *address);
address_remote (get, set) protected set
[Overridden from Efl.Net.Socket]
The remote address, similar to getpeername().
const char *efl_net_socket_address_remote_get(const Eo *obj); void efl_net_socket_address_remote_set(Eo *obj, const char *address);
allow_redirects (get, set)
Allows HTTP redirects to be followed.
Eina_Bool efl_net_dialer_websocket_allow_redirects_get(const Eo *obj); void efl_net_dialer_websocket_allow_redirects_set(Eo *obj, Eina_Bool allow_redirects);
authentication (get, set)
HTTP authentication to use.
void efl_net_dialer_websocket_authentication_get(const Eo *obj, const char **username, const char **password, Efl_Net_Http_Authentication_Method *method, Eina_Bool *restricted); void efl_net_dialer_websocket_authentication_set(Eo *obj, const char *username, const char *password, Efl_Net_Http_Authentication_Method method, Eina_Bool restricted);
Sends a binary blob (opcode=0x2) to the server.
void efl_net_dialer_websocket_binary_send(Eo *obj, const Eina_Slice blob);
can_read (get, set) protected set
[Overridden from Efl.Io.Reader]
Iftrue
will notify Efl.Io.Reader.read can be called without blocking or failing.
Eina_Bool efl_io_reader_can_read_get(const Eo *obj); void efl_io_reader_can_read_set(Eo *obj, Eina_Bool can_read);
can_write (get, set) protected set
[Overridden from Efl.Io.Writer]
Iftrue
will notify Efl.Io.Writer.write can be called without blocking or failing.
Eina_Bool efl_io_writer_can_write_get(const Eo *obj); void efl_io_writer_can_write_set(Eo *obj, Eina_Bool can_write);
close [Overridden from Efl.Io.Closer]
Closes the Input/Output object.
Eina_Error efl_io_closer_close(Eo *obj);
close_on_exec (get, set) [Overridden from Efl.Io.Closer]
If true will automatically close resources on exec() calls.
Eina_Bool efl_io_closer_close_on_exec_get(const Eo *obj); Eina_Bool efl_io_closer_close_on_exec_set(Eo *obj, Eina_Bool close_on_exec);
close_on_invalidate (get, set) [Overridden from Efl.Io.Closer]
If true will automatically close() on object invalidate.
Eina_Bool efl_io_closer_close_on_invalidate_get(const Eo *obj); void efl_io_closer_close_on_invalidate_set(Eo *obj, Eina_Bool close_on_invalidate);
Requests (opcode=0x8) the server to terminate the connection.
void efl_net_dialer_websocket_close_request(Eo *obj, Efl_Net_Dialer_Websocket_Close_Reason reason, const char *message);
closed (get) [Overridden from Efl.Io.Closer]
Eina_Bool efl_io_closer_closed_get(const Eo *obj);
connected (get, set) protected set
[Overridden from Efl.Net.Dialer]
Returns whenever the socket is connected or not.
Eina_Bool efl_net_dialer_connected_get(const Eo *obj); void efl_net_dialer_connected_set(Eo *obj, Eina_Bool connected);
constructor [Overridden from Efl.Object]
Implement this method to provide optional initialization code for your object.
Efl_Object *efl_constructor(Eo *obj);
cookie_jar (get, set)
This property sets the filename where to read and write cookies.
const char *efl_net_dialer_websocket_cookie_jar_get(const Eo *obj); void efl_net_dialer_websocket_cookie_jar_set(Eo *obj, const char *path);
destructor [Overridden from Efl.Object]
Implement this method to provide deinitialization code for your object if you need it.
void efl_destructor(Eo *obj);
dial [Overridden from Efl.Net.Dialer]
Dials to the remote peer.
Eina_Error efl_net_dialer_dial(Eo *obj, const char *address);
eos (get, set) protected set
[Overridden from Efl.Io.Reader]
Iftrue
will notify end of stream.
Eina_Bool efl_io_reader_eos_get(const Eo *obj); void efl_io_reader_eos_set(Eo *obj, Eina_Bool is_eos);
invalidate [Overridden from Efl.Object]
Implement this method to perform special actions when your object loses its parent, if you need to.
void efl_invalidate(Eo *obj);
Sends a PING (opcode=0x9) to the server.
void efl_net_dialer_websocket_ping(Eo *obj, const char *reason);
proxy (get, set) [Overridden from Efl.Net.Dialer]
Controls/retrieves if the dialer should use a proxy.
const char *efl_net_dialer_proxy_get(const Eo *obj); void efl_net_dialer_proxy_set(Eo *obj, const char *proxy_url);
read [Overridden from Efl.Io.Reader]
Reads data into a pre-allocated buffer.
Eina_Error efl_io_reader_read(Eo *obj, Eina_Rw_Slice rw_slice);
Adds a HTTP request header 'key: value'.
void efl_net_dialer_websocket_request_header_add(Eo *obj, const char *key, const char *value);
Clears all request headers.
void efl_net_dialer_websocket_request_headers_clear(Eo *obj);
Returns an iterator to the key-value pairs for request headers
Eina_Iterator *efl_net_dialer_websocket_request_headers_get(Eo *obj);
Adds a new WebSocket protocol to the request.
void efl_net_dialer_websocket_request_protocol_add(Eo *obj, const char *protocol);
Clears all request protocols
void efl_net_dialer_websocket_request_protocols_clear(Eo *obj);
Returns an iterator to the requested WebSocket protocols
Eina_Iterator *efl_net_dialer_websocket_request_protocols_get(Eo *obj);
Returns an iterator to the server-replied (response) WebSocket protocols it supports
Eina_Iterator *efl_net_dialer_websocket_response_protocols_get(Eo *obj);
streaming_mode (get, set)
Configures how to map streaming APIs to WebSocket.
Efl_Net_Dialer_Websocket_Streaming_Mode efl_net_dialer_websocket_streaming_mode_get(const Eo *obj); void efl_net_dialer_websocket_streaming_mode_set(Eo *obj, Efl_Net_Dialer_Websocket_Streaming_Mode streaming_mode);
Sends an UTF-8 TEXT (opcode=0x1) to the server.
void efl_net_dialer_websocket_text_send(Eo *obj, const char *text);
timeout_dial (get, set) [Overridden from Efl.Net.Dialer]
The timeout in seconds to use for dialing/connecting.
double efl_net_dialer_timeout_dial_get(const Eo *obj); void efl_net_dialer_timeout_dial_set(Eo *obj, double seconds);
user_agent (get, set)
The User-Agent to specify.
const char *efl_net_dialer_websocket_user_agent_get(const Eo *obj); void efl_net_dialer_websocket_user_agent_set(Eo *obj, const char *user_agent);
write [Overridden from Efl.Io.Writer]
Writes data from a pre-populated buffer.
Eina_Error efl_io_writer_write(Eo *obj, Eina_Slice slice, Eina_Slice *remaining);
Efl.Loop_Consumer | ||
---|---|---|
future_rejected | Creates a new future that is already rejected to a specified error using the Efl.Loop_Consumer.loop.get. | |
future_resolved | Creates a new future that is already resolved to a value. | |
loop (get) | ||
parent (get, set) | The parent of an object. | |
promise_new | Create a new promise with the scheduler coming from the loop provided by this object. | |
Efl.Object | ||
allow_parent_unref (get, set) | Allow an object to be deleted by unref even if it has a parent. | |
children_iterator_new | Get an iterator on all children. | |
comment (get, set) | A human readable comment for the object. | |
composite_attach | Make an object a composite object of another. | |
composite_detach | Detach a composite object from another object. | |
composite_part_is | Check if an object is part of a composite object. | |
debug_name_override | Build a read-only name for this object used for debugging. | |
event_callback_forwarder_del | Remove an event callback forwarder for a specified event and object. | |
event_callback_forwarder_priority_add | Add an event callback forwarder that will make this object emit an event whenever another object (source ) emits it. The event is said to be forwarded from source to this object. |
|
event_callback_stop | Stop the current callback call. | |
event_freeze | Freeze events of this object. | |
event_freeze_count (get) | ||
static | event_global_freeze | Globally freeze events for ALL EFL OBJECTS. |
static | event_global_freeze_count (get) | |
static | event_global_thaw | Globally thaw events for ALL EFL OBJECTS. |
event_thaw | Thaw events of object. | |
finalize | Implement this method to finish the initialization of your object after all (if any) user-provided configuration methods have been executed. | |
finalized (get) | ||
invalidated (get) | ||
invalidating (get) | ||
name (get, set) | The name of the object. | |
name_find | Find a child object with the given name and return it. | |
provider_find | Searches upwards in the object tree for a provider which knows the given class/interface. | |
provider_register | Will register a manager of a specific class to be answered by Efl.Object.provider_find. | |
provider_unregister | Will unregister a manager of a specific class that was previously registered and answered by Efl.Object.provider_find. |
Received a request to close the connection. It may be a reply/confirmation from a local request, see Efl.Net.Dialer_Websocket.close_request, or some server-generated reason. After this point, no more messages are allowed to be sent and no more will be received. Efl.Io.Closer.close will be called.
EFL_NET_DIALER_WEBSOCKET_EVENT_CLOSED_REASON(Efl_Net_Dialer_Websocket_Closed_Reason)
Received a binary message (opcode=0x2)
EFL_NET_DIALER_WEBSOCKET_EVENT_MESSAGE_BINARY(const Eina_Slice *)
Received a text string message (opcode=0x1)
EFL_NET_DIALER_WEBSOCKET_EVENT_MESSAGE_TEXT(const char *)
Received a pong (opcode=0xA) with optional message/reason
EFL_NET_DIALER_WEBSOCKET_EVENT_PONG(const char *)
Efl.Io.Closer | ||
---|---|---|
closed | Notifies closed, when property is marked as true | |
Efl.Io.Reader | ||
can_read,changed | Notifies can_read property changed. | |
eos | Notifies end of stream, when property is marked as true. | |
Efl.Io.Writer | ||
can_write,changed | Notifies can_write property changed. | |
Efl.Net.Dialer | ||
dialer,connected | Notifies the socket is connected to the remote peer. | |
dialer,error | Some error happened and the socket stopped working. | |
dialer,resolved | Notifies Efl.Net.Dialer.address_dial was resolved to Efl.Net.Socket.address_remote. | |
Efl.Object | ||
del | Object is being deleted. See Efl.Object.destructor. | |
destruct | Object has been fully destroyed. It can not be used beyond this point. This event should only serve to clean up any reference you keep to the object. | |
invalidate | Object is being invalidated and losing its parent. See Efl.Object.invalidate. | |
noref | Object has lost its last reference, only parent relationship is keeping it alive. Advanced usage. | |
ownership,shared | Object has acquired a second reference. It has multiple owners now. Triggered whenever increasing the refcount from one to two, it will not trigger by further increasing the refcount beyond two. | |
ownership,unique | Object has lost a reference and only one is left. It has just one owner now. Triggered whenever the refcount goes from two to one. |