Efl.Net.Dialer.Websocket (class)


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)

Since 1.19


Efl.Loop.Consumer (class)Efl.Object (class)

Full hierarchy


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]

If true 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]

If true 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_destructor (get, set) [Overridden from Efl.Io.Closer]

If true will automatically close() on object destructor.
Eina_Bool efl_io_closer_close_on_destructor_get(const Eo *obj);
void efl_io_closer_close_on_destructor_set(Eo *obj, Eina_Bool close_on_destructor);

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);


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, set) [Overridden from Efl.Io.Closer]

If true will notify object was closed.
Eina_Bool efl_io_closer_closed_get(const Eo *obj);
Eina_Bool efl_io_closer_closed_set(Eo *obj, Eina_Bool is_closed);

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]

Call the object's constructor.
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]

Call the object's destructor.
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]

If true 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);


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);


loop (get) The loop to which this object belongs to.
parent (get, set) The parent of an 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 childrens
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.
del Unrefs the object and reparents it to NULL.
event_callback_forwarder_add Add an event callback forwarder for an event and an object.
event_callback_forwarder_del Remove an event callback forwarder for an event and an object.
event_callback_stop Stop the current callback call.
event_freeze Freeze events of object.
event_freeze_count (get) Return freeze events of object.
class event_global_freeze Freeze events of object.
class event_global_freeze_count (get) Return freeze events of object.
class event_global_thaw Thaw events of object.
event_thaw Thaw events of object.
finalize Called at the end of efl_add. Should not be called, just overridden.
finalized (get) True if the object is already finalized, otherwise false.
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.



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.


Received a binary message (opcode=0x2)


Received a text string message (opcode=0x1)


Received a pong (opcode=0xA) with optional message/reason


closed Notifies closed, when property is marked as true
can_read,changed Notifies can_read property changed.
eos Notifies end of stream, when property is marked as true.
can_write,changed Notifies can_write property changed.
connected Notifies the socket is connected to the remote peer.
error Some error happened and the socket stopped working.
resolved Notifies Efl.Net.Dialer.address_dial was resolved to Efl.Net.Socket.address_remote.
callback,add A callback was added.
callback,del A callback was deleted.
del Object is being deleted.
destruct Object has been fully destroyed. It can not be used beyond this point. This event should only serve to clean up any dangling pointer.