Skip to content

Latest commit

History

History
196 lines (118 loc) · 5.75 KB

File metadata and controls

196 lines (118 loc) · 5.75 KB

API

Overview

There're just 3 roles in this library - socket, client and message.

client is for physical connection while socket is for "namespace" (which is like a logical channel), which means one socket paired with one namespace, and one client paired with one physical connection.

Since a physical connection can have multiple namespaces (which is called multiplex), a client object may have multiple socket objects, each of which is bound to a distinct namespace.

Use client to setup the connection to the server, manange the connection status, also session id for the connection.

Use socket to send messages under namespace and receives messages in the namespace, also handle special types of message.

The message is just about the content you want to send, with text, binary or structured combinations.

Socket

Constructors

Sockets are all managed by client, no public constructors.

You can get it's pointer by client.socket(namespace).

Event Emitter

void emit(std::string const& name, message::list const& msglist, std::function<void (message::ptr const&)> const& ack)

Universal event emition interface, by applying implicit conversion magic, it is backward compatible with all previous emit interfaces.

Event Bindings

void on(std::string const& event_name,event_listener const& func)

void on(std::string const& event_name,event_listener_aux const& func)

Bind a callback to specified event name. Same as socket.on() function in JS, event_listener is for full content event object, event_listener_aux is for convenience.

void off(std::string const& event_name)

Unbind the event callback with specified name.

void off_all()

Clear all event bindings (not including the error listener).

void on_error(error_listener const& l)

Bind the error handler for socket.io error messages.

void off_error()

Unbind the error handler.

//event object:classevent
{
public:const std::string& get_nsp() const;
const std::string& get_name() const;
const message::ptr& get_message() const;
boolneed_ack() const;
voidput_ack_message(message::ptr const& ack_message);
message::ptr const& get_ack_message() const;
...
};
//event listener declare:typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::ptr& ack_message)> event_listener_aux;
typedef std::function<void(event& event)> event_listener;
typedef std::function<void(message::ptr const& message)> error_listener;

Connect and close socket

connect will happen for existing sockets automatically when client have opened up the physical connection.

socket opened with connected client will connect to its namespace immediately.

void close()

Positively disconnect from namespace.

Get name of namespace

std::string const& get_namespace() const

Get current namespace name which the client is inside.

Client

Constructors

client() default constructor.

Connection Listeners

void set_open_listener(con_listener const& l)

Call when websocket is open, especially means good connectivity.

void set_fail_listener(con_listener const& l)

Call when failed in connecting.

void set_close_listener(close_listener const& l)

Call when closed or drop. See client::close_reason

//connection listener declare:enum close_reason
{
close_reason_normal,
close_reason_drop
};
typedef std::function<void(void)> con_listener;
typedef std::function<void(close_reason const& reason)> close_listener;

Socket listeners

void set_socket_open_listener(socket_listener const& l)

Set listener for socket connect event, called when any sockets being ready to send message.

void set_socket_close_listener(socket_listener const& l)

Set listener for socket close event, called when any sockets being closed, afterward, corresponding socket object will be cleared from client.

//socket_listener declare:typedef std::function<void(std::string const& nsp)> socket_listener;

Connect and Close

void connect(const std::string& uri)

Connect to socket.io server, e.g., client.connect("ws://localhost:3000");

void close()

Close the client, return immediately.

void sync_close()

Close the client, return until it is really closed.

bool opened() const

Check if client's connection is opened.

Transparent reconnecting

void set_reconnect_attempts(int attempts)

Set max reconnect attempts, set to 0 to disable transparent reconnecting.

void set_reconnect_delay(unsigned millis)

Set minimum delay for reconnecting, this is the delay for 1st reconnecting attempt, then the delay duration grows by attempts made.

void set_reconnect_delay_max(unsigned millis)

Set maximum delay for reconnecting.

void set_reconnecting_listener(con_listener const& l)

Set listener for reconnecting is in process.

void set_reconnect_listener(reconnect_listener const& l)

Set listener for reconnecting event, called once a delayed connecting is scheduled.

Namespace

socket::ptr socket(std::string const& nsp)

Get a pointer to a socket which is paired with the specified namespace.

Session ID

std::string const& get_sessionid() const

Get socket.io session id.

Message

message Base class of all message object.

int_message message contains a 64-bit integer.

double_message message contains a double.

string_message message contains a string.

array_message message contains a vector<message::ptr>.

object_message message contains a map<string,message::ptr>.

message::ptr pointer to message object, it will be one of its derived classes, judge by message.get_flag().

All designated constructor of message objects is hidden, you need to create message and get the message::ptr by [derived]_message:create().

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
socket.io-client-cpp/API.md at master · JimmyHwang/socket.io-client-cpp · GitHub
Skip to content

Latest commit

History

History
196 lines (118 loc) · 5.75 KB

File metadata and controls

196 lines (118 loc) · 5.75 KB

API

Overview

There're just 3 roles in this library - socket, client and message.

client is for physical connection while socket is for "namespace" (which is like a logical channel), which means one socket paired with one namespace, and one client paired with one physical connection.

Since a physical connection can have multiple namespaces (which is called multiplex), a client object may have multiple socket objects, each of which is bound to a distinct namespace.

Use client to setup the connection to the server, manange the connection status, also session id for the connection.

Use socket to send messages under namespace and receives messages in the namespace, also handle special types of message.

The message is just about the content you want to send, with text, binary or structured combinations.

Socket

Constructors

Sockets are all managed by client, no public constructors.

You can get it's pointer by client.socket(namespace).

Event Emitter

void emit(std::string const& name, message::list const& msglist, std::function<void (message::ptr const&)> const& ack)

Universal event emition interface, by applying implicit conversion magic, it is backward compatible with all previous emit interfaces.

Event Bindings

void on(std::string const& event_name,event_listener const& func)

void on(std::string const& event_name,event_listener_aux const& func)

Bind a callback to specified event name. Same as socket.on() function in JS, event_listener is for full content event object, event_listener_aux is for convenience.

void off(std::string const& event_name)

Unbind the event callback with specified name.

void off_all()

Clear all event bindings (not including the error listener).

void on_error(error_listener const& l)

Bind the error handler for socket.io error messages.

void off_error()

Unbind the error handler.

//event object:classevent
{
public:const std::string& get_nsp() const;
const std::string& get_name() const;
const message::ptr& get_message() const;
boolneed_ack() const;
voidput_ack_message(message::ptr const& ack_message);
message::ptr const& get_ack_message() const;
...
};
//event listener declare:typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::ptr& ack_message)> event_listener_aux;
typedef std::function<void(event& event)> event_listener;
typedef std::function<void(message::ptr const& message)> error_listener;

Connect and close socket

connect will happen for existing sockets automatically when client have opened up the physical connection.

socket opened with connected client will connect to its namespace immediately.

void close()

Positively disconnect from namespace.

Get name of namespace

std::string const& get_namespace() const

Get current namespace name which the client is inside.

Client

Constructors

client() default constructor.

Connection Listeners

void set_open_listener(con_listener const& l)

Call when websocket is open, especially means good connectivity.

void set_fail_listener(con_listener const& l)

Call when failed in connecting.

void set_close_listener(close_listener const& l)

Call when closed or drop. See client::close_reason

//connection listener declare:enum close_reason
{
close_reason_normal,
close_reason_drop
};
typedef std::function<void(void)> con_listener;
typedef std::function<void(close_reason const& reason)> close_listener;

Socket listeners

void set_socket_open_listener(socket_listener const& l)

Set listener for socket connect event, called when any sockets being ready to send message.

void set_socket_close_listener(socket_listener const& l)

Set listener for socket close event, called when any sockets being closed, afterward, corresponding socket object will be cleared from client.

//socket_listener declare:typedef std::function<void(std::string const& nsp)> socket_listener;

Connect and Close

void connect(const std::string& uri)

Connect to socket.io server, e.g., client.connect("ws://localhost:3000");

void close()

Close the client, return immediately.

void sync_close()

Close the client, return until it is really closed.

bool opened() const

Check if client's connection is opened.

Transparent reconnecting

void set_reconnect_attempts(int attempts)

Set max reconnect attempts, set to 0 to disable transparent reconnecting.

void set_reconnect_delay(unsigned millis)

Set minimum delay for reconnecting, this is the delay for 1st reconnecting attempt, then the delay duration grows by attempts made.

void set_reconnect_delay_max(unsigned millis)

Set maximum delay for reconnecting.

void set_reconnecting_listener(con_listener const& l)

Set listener for reconnecting is in process.

void set_reconnect_listener(reconnect_listener const& l)

Set listener for reconnecting event, called once a delayed connecting is scheduled.

Namespace

socket::ptr socket(std::string const& nsp)

Get a pointer to a socket which is paired with the specified namespace.

Session ID

std::string const& get_sessionid() const

Get socket.io session id.

Message

message Base class of all message object.

int_message message contains a 64-bit integer.

double_message message contains a double.

string_message message contains a string.

array_message message contains a vector<message::ptr>.

object_message message contains a map<string,message::ptr>.

message::ptr pointer to message object, it will be one of its derived classes, judge by message.get_flag().

All designated constructor of message objects is hidden, you need to create message and get the message::ptr by [derived]_message:create().

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' socket.io-client-cpp/API.md at master · JimmyHwang/socket.io-client-cpp · GitHub
Skip to content

Latest commit

History

History
196 lines (118 loc) · 5.75 KB

File metadata and controls

196 lines (118 loc) · 5.75 KB

API

Overview

There're just 3 roles in this library - socket, client and message.

client is for physical connection while socket is for "namespace" (which is like a logical channel), which means one socket paired with one namespace, and one client paired with one physical connection.

Since a physical connection can have multiple namespaces (which is called multiplex), a client object may have multiple socket objects, each of which is bound to a distinct namespace.

Use client to setup the connection to the server, manange the connection status, also session id for the connection.

Use socket to send messages under namespace and receives messages in the namespace, also handle special types of message.

The message is just about the content you want to send, with text, binary or structured combinations.

Socket

Constructors

Sockets are all managed by client, no public constructors.

You can get it's pointer by client.socket(namespace).

Event Emitter

void emit(std::string const& name, message::list const& msglist, std::function<void (message::ptr const&)> const& ack)

Universal event emition interface, by applying implicit conversion magic, it is backward compatible with all previous emit interfaces.

Event Bindings

void on(std::string const& event_name,event_listener const& func)

void on(std::string const& event_name,event_listener_aux const& func)

Bind a callback to specified event name. Same as socket.on() function in JS, event_listener is for full content event object, event_listener_aux is for convenience.

void off(std::string const& event_name)

Unbind the event callback with specified name.

void off_all()

Clear all event bindings (not including the error listener).

void on_error(error_listener const& l)

Bind the error handler for socket.io error messages.

void off_error()

Unbind the error handler.

//event object:classevent
{
public:const std::string& get_nsp() const;
const std::string& get_name() const;
const message::ptr& get_message() const;
boolneed_ack() const;
voidput_ack_message(message::ptr const& ack_message);
message::ptr const& get_ack_message() const;
...
};
//event listener declare:typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::ptr& ack_message)> event_listener_aux;
typedef std::function<void(event& event)> event_listener;
typedef std::function<void(message::ptr const& message)> error_listener;

Connect and close socket

connect will happen for existing sockets automatically when client have opened up the physical connection.

socket opened with connected client will connect to its namespace immediately.

void close()

Positively disconnect from namespace.

Get name of namespace

std::string const& get_namespace() const

Get current namespace name which the client is inside.

Client

Constructors

client() default constructor.

Connection Listeners

void set_open_listener(con_listener const& l)

Call when websocket is open, especially means good connectivity.

void set_fail_listener(con_listener const& l)

Call when failed in connecting.

void set_close_listener(close_listener const& l)

Call when closed or drop. See client::close_reason

//connection listener declare:enum close_reason
{
close_reason_normal,
close_reason_drop
};
typedef std::function<void(void)> con_listener;
typedef std::function<void(close_reason const& reason)> close_listener;

Socket listeners

void set_socket_open_listener(socket_listener const& l)

Set listener for socket connect event, called when any sockets being ready to send message.

void set_socket_close_listener(socket_listener const& l)

Set listener for socket close event, called when any sockets being closed, afterward, corresponding socket object will be cleared from client.

//socket_listener declare:typedef std::function<void(std::string const& nsp)> socket_listener;

Connect and Close

void connect(const std::string& uri)

Connect to socket.io server, e.g., client.connect("ws://localhost:3000");

void close()

Close the client, return immediately.

void sync_close()

Close the client, return until it is really closed.

bool opened() const

Check if client's connection is opened.

Transparent reconnecting

void set_reconnect_attempts(int attempts)

Set max reconnect attempts, set to 0 to disable transparent reconnecting.

void set_reconnect_delay(unsigned millis)

Set minimum delay for reconnecting, this is the delay for 1st reconnecting attempt, then the delay duration grows by attempts made.

void set_reconnect_delay_max(unsigned millis)

Set maximum delay for reconnecting.

void set_reconnecting_listener(con_listener const& l)

Set listener for reconnecting is in process.

void set_reconnect_listener(reconnect_listener const& l)

Set listener for reconnecting event, called once a delayed connecting is scheduled.

Namespace

socket::ptr socket(std::string const& nsp)

Get a pointer to a socket which is paired with the specified namespace.

Session ID

std::string const& get_sessionid() const

Get socket.io session id.

Message

message Base class of all message object.

int_message message contains a 64-bit integer.

double_message message contains a double.

string_message message contains a string.

array_message message contains a vector<message::ptr>.

object_message message contains a map<string,message::ptr>.

message::ptr pointer to message object, it will be one of its derived classes, judge by message.get_flag().

All designated constructor of message objects is hidden, you need to create message and get the message::ptr by [derived]_message:create().

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' socket.io-client-cpp/API.md at master · JimmyHwang/socket.io-client-cpp · GitHub
Skip to content

Latest commit

History

History
196 lines (118 loc) · 5.75 KB

File metadata and controls

196 lines (118 loc) · 5.75 KB

API

Overview

There're just 3 roles in this library - socket, client and message.

client is for physical connection while socket is for "namespace" (which is like a logical channel), which means one socket paired with one namespace, and one client paired with one physical connection.

Since a physical connection can have multiple namespaces (which is called multiplex), a client object may have multiple socket objects, each of which is bound to a distinct namespace.

Use client to setup the connection to the server, manange the connection status, also session id for the connection.

Use socket to send messages under namespace and receives messages in the namespace, also handle special types of message.

The message is just about the content you want to send, with text, binary or structured combinations.

Socket

Constructors

Sockets are all managed by client, no public constructors.

You can get it's pointer by client.socket(namespace).

Event Emitter

void emit(std::string const& name, message::list const& msglist, std::function<void (message::ptr const&)> const& ack)

Universal event emition interface, by applying implicit conversion magic, it is backward compatible with all previous emit interfaces.

Event Bindings

void on(std::string const& event_name,event_listener const& func)

void on(std::string const& event_name,event_listener_aux const& func)

Bind a callback to specified event name. Same as socket.on() function in JS, event_listener is for full content event object, event_listener_aux is for convenience.

void off(std::string const& event_name)

Unbind the event callback with specified name.

void off_all()

Clear all event bindings (not including the error listener).

void on_error(error_listener const& l)

Bind the error handler for socket.io error messages.

void off_error()

Unbind the error handler.

//event object:classevent
{
public:const std::string& get_nsp() const;
const std::string& get_name() const;
const message::ptr& get_message() const;
boolneed_ack() const;
voidput_ack_message(message::ptr const& ack_message);
message::ptr const& get_ack_message() const;
...
};
//event listener declare:typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::ptr& ack_message)> event_listener_aux;
typedef std::function<void(event& event)> event_listener;
typedef std::function<void(message::ptr const& message)> error_listener;

Connect and close socket

connect will happen for existing sockets automatically when client have opened up the physical connection.

socket opened with connected client will connect to its namespace immediately.

void close()

Positively disconnect from namespace.

Get name of namespace

std::string const& get_namespace() const

Get current namespace name which the client is inside.

Client

Constructors

client() default constructor.

Connection Listeners

void set_open_listener(con_listener const& l)

Call when websocket is open, especially means good connectivity.

void set_fail_listener(con_listener const& l)

Call when failed in connecting.

void set_close_listener(close_listener const& l)

Call when closed or drop. See client::close_reason

//connection listener declare:enum close_reason
{
close_reason_normal,
close_reason_drop
};
typedef std::function<void(void)> con_listener;
typedef std::function<void(close_reason const& reason)> close_listener;

Socket listeners

void set_socket_open_listener(socket_listener const& l)

Set listener for socket connect event, called when any sockets being ready to send message.

void set_socket_close_listener(socket_listener const& l)

Set listener for socket close event, called when any sockets being closed, afterward, corresponding socket object will be cleared from client.

//socket_listener declare:typedef std::function<void(std::string const& nsp)> socket_listener;

Connect and Close

void connect(const std::string& uri)

Connect to socket.io server, e.g., client.connect("ws://localhost:3000");

void close()

Close the client, return immediately.

void sync_close()

Close the client, return until it is really closed.

bool opened() const

Check if client's connection is opened.

Transparent reconnecting

void set_reconnect_attempts(int attempts)

Set max reconnect attempts, set to 0 to disable transparent reconnecting.

void set_reconnect_delay(unsigned millis)

Set minimum delay for reconnecting, this is the delay for 1st reconnecting attempt, then the delay duration grows by attempts made.

void set_reconnect_delay_max(unsigned millis)

Set maximum delay for reconnecting.

void set_reconnecting_listener(con_listener const& l)

Set listener for reconnecting is in process.

void set_reconnect_listener(reconnect_listener const& l)

Set listener for reconnecting event, called once a delayed connecting is scheduled.

Namespace

socket::ptr socket(std::string const& nsp)

Get a pointer to a socket which is paired with the specified namespace.

Session ID

std::string const& get_sessionid() const

Get socket.io session id.

Message

message Base class of all message object.

int_message message contains a 64-bit integer.

double_message message contains a double.

string_message message contains a string.

array_message message contains a vector<message::ptr>.

object_message message contains a map<string,message::ptr>.

message::ptr pointer to message object, it will be one of its derived classes, judge by message.get_flag().

All designated constructor of message objects is hidden, you need to create message and get the message::ptr by [derived]_message:create().

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' socket.io-client-cpp/API.md at master · JimmyHwang/socket.io-client-cpp · GitHub
Skip to content

Latest commit

History

History
196 lines (118 loc) · 5.75 KB

File metadata and controls

196 lines (118 loc) · 5.75 KB

API

Overview

There're just 3 roles in this library - socket, client and message.

client is for physical connection while socket is for "namespace" (which is like a logical channel), which means one socket paired with one namespace, and one client paired with one physical connection.

Since a physical connection can have multiple namespaces (which is called multiplex), a client object may have multiple socket objects, each of which is bound to a distinct namespace.

Use client to setup the connection to the server, manange the connection status, also session id for the connection.

Use socket to send messages under namespace and receives messages in the namespace, also handle special types of message.

The message is just about the content you want to send, with text, binary or structured combinations.

Socket

Constructors

Sockets are all managed by client, no public constructors.

You can get it's pointer by client.socket(namespace).

Event Emitter

void emit(std::string const& name, message::list const& msglist, std::function<void (message::ptr const&)> const& ack)

Universal event emition interface, by applying implicit conversion magic, it is backward compatible with all previous emit interfaces.

Event Bindings

void on(std::string const& event_name,event_listener const& func)

void on(std::string const& event_name,event_listener_aux const& func)

Bind a callback to specified event name. Same as socket.on() function in JS, event_listener is for full content event object, event_listener_aux is for convenience.

void off(std::string const& event_name)

Unbind the event callback with specified name.

void off_all()

Clear all event bindings (not including the error listener).

void on_error(error_listener const& l)

Bind the error handler for socket.io error messages.

void off_error()

Unbind the error handler.

//event object:classevent
{
public:const std::string& get_nsp() const;
const std::string& get_name() const;
const message::ptr& get_message() const;
boolneed_ack() const;
voidput_ack_message(message::ptr const& ack_message);
message::ptr const& get_ack_message() const;
...
};
//event listener declare:typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::ptr& ack_message)> event_listener_aux;
typedef std::function<void(event& event)> event_listener;
typedef std::function<void(message::ptr const& message)> error_listener;

Connect and close socket

connect will happen for existing sockets automatically when client have opened up the physical connection.

socket opened with connected client will connect to its namespace immediately.

void close()

Positively disconnect from namespace.

Get name of namespace

std::string const& get_namespace() const

Get current namespace name which the client is inside.

Client

Constructors

client() default constructor.

Connection Listeners

void set_open_listener(con_listener const& l)

Call when websocket is open, especially means good connectivity.

void set_fail_listener(con_listener const& l)

Call when failed in connecting.

void set_close_listener(close_listener const& l)

Call when closed or drop. See client::close_reason

//connection listener declare:enum close_reason
{
close_reason_normal,
close_reason_drop
};
typedef std::function<void(void)> con_listener;
typedef std::function<void(close_reason const& reason)> close_listener;

Socket listeners

void set_socket_open_listener(socket_listener const& l)

Set listener for socket connect event, called when any sockets being ready to send message.

void set_socket_close_listener(socket_listener const& l)

Set listener for socket close event, called when any sockets being closed, afterward, corresponding socket object will be cleared from client.

//socket_listener declare:typedef std::function<void(std::string const& nsp)> socket_listener;

Connect and Close

void connect(const std::string& uri)

Connect to socket.io server, e.g., client.connect("ws://localhost:3000");

void close()

Close the client, return immediately.

void sync_close()

Close the client, return until it is really closed.

bool opened() const

Check if client's connection is opened.

Transparent reconnecting

void set_reconnect_attempts(int attempts)

Set max reconnect attempts, set to 0 to disable transparent reconnecting.

void set_reconnect_delay(unsigned millis)

Set minimum delay for reconnecting, this is the delay for 1st reconnecting attempt, then the delay duration grows by attempts made.

void set_reconnect_delay_max(unsigned millis)

Set maximum delay for reconnecting.

void set_reconnecting_listener(con_listener const& l)

Set listener for reconnecting is in process.

void set_reconnect_listener(reconnect_listener const& l)

Set listener for reconnecting event, called once a delayed connecting is scheduled.

Namespace

socket::ptr socket(std::string const& nsp)

Get a pointer to a socket which is paired with the specified namespace.

Session ID

std::string const& get_sessionid() const

Get socket.io session id.

Message

message Base class of all message object.

int_message message contains a 64-bit integer.

double_message message contains a double.

string_message message contains a string.

array_message message contains a vector<message::ptr>.

object_message message contains a map<string,message::ptr>.

message::ptr pointer to message object, it will be one of its derived classes, judge by message.get_flag().

All designated constructor of message objects is hidden, you need to create message and get the message::ptr by [derived]_message:create().

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' socket.io-client-cpp/API.md at master · JimmyHwang/socket.io-client-cpp · GitHub
Skip to content

Latest commit

History

History
196 lines (118 loc) · 5.75 KB

File metadata and controls

196 lines (118 loc) · 5.75 KB

API

Overview

There're just 3 roles in this library - socket, client and message.

client is for physical connection while socket is for "namespace" (which is like a logical channel), which means one socket paired with one namespace, and one client paired with one physical connection.

Since a physical connection can have multiple namespaces (which is called multiplex), a client object may have multiple socket objects, each of which is bound to a distinct namespace.

Use client to setup the connection to the server, manange the connection status, also session id for the connection.

Use socket to send messages under namespace and receives messages in the namespace, also handle special types of message.

The message is just about the content you want to send, with text, binary or structured combinations.

Socket

Constructors

Sockets are all managed by client, no public constructors.

You can get it's pointer by client.socket(namespace).

Event Emitter

void emit(std::string const& name, message::list const& msglist, std::function<void (message::ptr const&)> const& ack)

Universal event emition interface, by applying implicit conversion magic, it is backward compatible with all previous emit interfaces.

Event Bindings

void on(std::string const& event_name,event_listener const& func)

void on(std::string const& event_name,event_listener_aux const& func)

Bind a callback to specified event name. Same as socket.on() function in JS, event_listener is for full content event object, event_listener_aux is for convenience.

void off(std::string const& event_name)

Unbind the event callback with specified name.

void off_all()

Clear all event bindings (not including the error listener).

void on_error(error_listener const& l)

Bind the error handler for socket.io error messages.

void off_error()

Unbind the error handler.

//event object:classevent
{
public:const std::string& get_nsp() const;
const std::string& get_name() const;
const message::ptr& get_message() const;
boolneed_ack() const;
voidput_ack_message(message::ptr const& ack_message);
message::ptr const& get_ack_message() const;
...
};
//event listener declare:typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::ptr& ack_message)> event_listener_aux;
typedef std::function<void(event& event)> event_listener;
typedef std::function<void(message::ptr const& message)> error_listener;

Connect and close socket

connect will happen for existing sockets automatically when client have opened up the physical connection.

socket opened with connected client will connect to its namespace immediately.

void close()

Positively disconnect from namespace.

Get name of namespace

std::string const& get_namespace() const

Get current namespace name which the client is inside.

Client

Constructors

client() default constructor.

Connection Listeners

void set_open_listener(con_listener const& l)

Call when websocket is open, especially means good connectivity.

void set_fail_listener(con_listener const& l)

Call when failed in connecting.

void set_close_listener(close_listener const& l)

Call when closed or drop. See client::close_reason

//connection listener declare:enum close_reason
{
close_reason_normal,
close_reason_drop
};
typedef std::function<void(void)> con_listener;
typedef std::function<void(close_reason const& reason)> close_listener;

Socket listeners

void set_socket_open_listener(socket_listener const& l)

Set listener for socket connect event, called when any sockets being ready to send message.

void set_socket_close_listener(socket_listener const& l)

Set listener for socket close event, called when any sockets being closed, afterward, corresponding socket object will be cleared from client.

//socket_listener declare:typedef std::function<void(std::string const& nsp)> socket_listener;

Connect and Close

void connect(const std::string& uri)

Connect to socket.io server, e.g., client.connect("ws://localhost:3000");

void close()

Close the client, return immediately.

void sync_close()

Close the client, return until it is really closed.

bool opened() const

Check if client's connection is opened.

Transparent reconnecting

void set_reconnect_attempts(int attempts)

Set max reconnect attempts, set to 0 to disable transparent reconnecting.

void set_reconnect_delay(unsigned millis)

Set minimum delay for reconnecting, this is the delay for 1st reconnecting attempt, then the delay duration grows by attempts made.

void set_reconnect_delay_max(unsigned millis)

Set maximum delay for reconnecting.

void set_reconnecting_listener(con_listener const& l)

Set listener for reconnecting is in process.

void set_reconnect_listener(reconnect_listener const& l)

Set listener for reconnecting event, called once a delayed connecting is scheduled.

Namespace

socket::ptr socket(std::string const& nsp)

Get a pointer to a socket which is paired with the specified namespace.

Session ID

std::string const& get_sessionid() const

Get socket.io session id.

Message

message Base class of all message object.

int_message message contains a 64-bit integer.

double_message message contains a double.

string_message message contains a string.

array_message message contains a vector<message::ptr>.

object_message message contains a map<string,message::ptr>.

message::ptr pointer to message object, it will be one of its derived classes, judge by message.get_flag().

All designated constructor of message objects is hidden, you need to create message and get the message::ptr by [derived]_message:create().

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' socket.io-client-cpp/API.md at master · JimmyHwang/socket.io-client-cpp · GitHub
Skip to content

Latest commit

History

History
196 lines (118 loc) · 5.75 KB

File metadata and controls

196 lines (118 loc) · 5.75 KB

API

Overview

There're just 3 roles in this library - socket, client and message.

client is for physical connection while socket is for "namespace" (which is like a logical channel), which means one socket paired with one namespace, and one client paired with one physical connection.

Since a physical connection can have multiple namespaces (which is called multiplex), a client object may have multiple socket objects, each of which is bound to a distinct namespace.

Use client to setup the connection to the server, manange the connection status, also session id for the connection.

Use socket to send messages under namespace and receives messages in the namespace, also handle special types of message.

The message is just about the content you want to send, with text, binary or structured combinations.

Socket

Constructors

Sockets are all managed by client, no public constructors.

You can get it's pointer by client.socket(namespace).

Event Emitter

void emit(std::string const& name, message::list const& msglist, std::function<void (message::ptr const&)> const& ack)

Universal event emition interface, by applying implicit conversion magic, it is backward compatible with all previous emit interfaces.

Event Bindings

void on(std::string const& event_name,event_listener const& func)

void on(std::string const& event_name,event_listener_aux const& func)

Bind a callback to specified event name. Same as socket.on() function in JS, event_listener is for full content event object, event_listener_aux is for convenience.

void off(std::string const& event_name)

Unbind the event callback with specified name.

void off_all()

Clear all event bindings (not including the error listener).

void on_error(error_listener const& l)

Bind the error handler for socket.io error messages.

void off_error()

Unbind the error handler.

//event object:classevent
{
public:const std::string& get_nsp() const;
const std::string& get_name() const;
const message::ptr& get_message() const;
boolneed_ack() const;
voidput_ack_message(message::ptr const& ack_message);
message::ptr const& get_ack_message() const;
...
};
//event listener declare:typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::ptr& ack_message)> event_listener_aux;
typedef std::function<void(event& event)> event_listener;
typedef std::function<void(message::ptr const& message)> error_listener;

Connect and close socket

connect will happen for existing sockets automatically when client have opened up the physical connection.

socket opened with connected client will connect to its namespace immediately.

void close()

Positively disconnect from namespace.

Get name of namespace

std::string const& get_namespace() const

Get current namespace name which the client is inside.

Client

Constructors

client() default constructor.

Connection Listeners

void set_open_listener(con_listener const& l)

Call when websocket is open, especially means good connectivity.

void set_fail_listener(con_listener const& l)

Call when failed in connecting.

void set_close_listener(close_listener const& l)

Call when closed or drop. See client::close_reason

//connection listener declare:enum close_reason
{
close_reason_normal,
close_reason_drop
};
typedef std::function<void(void)> con_listener;
typedef std::function<void(close_reason const& reason)> close_listener;

Socket listeners

void set_socket_open_listener(socket_listener const& l)

Set listener for socket connect event, called when any sockets being ready to send message.

void set_socket_close_listener(socket_listener const& l)

Set listener for socket close event, called when any sockets being closed, afterward, corresponding socket object will be cleared from client.

//socket_listener declare:typedef std::function<void(std::string const& nsp)> socket_listener;

Connect and Close

void connect(const std::string& uri)

Connect to socket.io server, e.g., client.connect("ws://localhost:3000");

void close()

Close the client, return immediately.

void sync_close()

Close the client, return until it is really closed.

bool opened() const

Check if client's connection is opened.

Transparent reconnecting

void set_reconnect_attempts(int attempts)

Set max reconnect attempts, set to 0 to disable transparent reconnecting.

void set_reconnect_delay(unsigned millis)

Set minimum delay for reconnecting, this is the delay for 1st reconnecting attempt, then the delay duration grows by attempts made.

void set_reconnect_delay_max(unsigned millis)

Set maximum delay for reconnecting.

void set_reconnecting_listener(con_listener const& l)

Set listener for reconnecting is in process.

void set_reconnect_listener(reconnect_listener const& l)

Set listener for reconnecting event, called once a delayed connecting is scheduled.

Namespace

socket::ptr socket(std::string const& nsp)

Get a pointer to a socket which is paired with the specified namespace.

Session ID

std::string const& get_sessionid() const

Get socket.io session id.

Message

message Base class of all message object.

int_message message contains a 64-bit integer.

double_message message contains a double.

string_message message contains a string.

array_message message contains a vector<message::ptr>.

object_message message contains a map<string,message::ptr>.

message::ptr pointer to message object, it will be one of its derived classes, judge by message.get_flag().

All designated constructor of message objects is hidden, you need to create message and get the message::ptr by [derived]_message:create().

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); socket.io-client-cpp/API.md at master · JimmyHwang/socket.io-client-cpp · GitHub
Skip to content

Latest commit

History

History
196 lines (118 loc) · 5.75 KB

File metadata and controls

196 lines (118 loc) · 5.75 KB

API

Overview

There're just 3 roles in this library - socket, client and message.

client is for physical connection while socket is for "namespace" (which is like a logical channel), which means one socket paired with one namespace, and one client paired with one physical connection.

Since a physical connection can have multiple namespaces (which is called multiplex), a client object may have multiple socket objects, each of which is bound to a distinct namespace.

Use client to setup the connection to the server, manange the connection status, also session id for the connection.

Use socket to send messages under namespace and receives messages in the namespace, also handle special types of message.

The message is just about the content you want to send, with text, binary or structured combinations.

Socket

Constructors

Sockets are all managed by client, no public constructors.

You can get it's pointer by client.socket(namespace).

Event Emitter

void emit(std::string const& name, message::list const& msglist, std::function<void (message::ptr const&)> const& ack)

Universal event emition interface, by applying implicit conversion magic, it is backward compatible with all previous emit interfaces.

Event Bindings

void on(std::string const& event_name,event_listener const& func)

void on(std::string const& event_name,event_listener_aux const& func)

Bind a callback to specified event name. Same as socket.on() function in JS, event_listener is for full content event object, event_listener_aux is for convenience.

void off(std::string const& event_name)

Unbind the event callback with specified name.

void off_all()

Clear all event bindings (not including the error listener).

void on_error(error_listener const& l)

Bind the error handler for socket.io error messages.

void off_error()

Unbind the error handler.

//event object:classevent
{
public:const std::string& get_nsp() const;
const std::string& get_name() const;
const message::ptr& get_message() const;
boolneed_ack() const;
voidput_ack_message(message::ptr const& ack_message);
message::ptr const& get_ack_message() const;
...
};
//event listener declare:typedef std::function<void(const std::string& name,message::ptr const& message,bool need_ack, message::ptr& ack_message)> event_listener_aux;
typedef std::function<void(event& event)> event_listener;
typedef std::function<void(message::ptr const& message)> error_listener;

Connect and close socket

connect will happen for existing sockets automatically when client have opened up the physical connection.

socket opened with connected client will connect to its namespace immediately.

void close()

Positively disconnect from namespace.

Get name of namespace

std::string const& get_namespace() const

Get current namespace name which the client is inside.

Client

Constructors

client() default constructor.

Connection Listeners

void set_open_listener(con_listener const& l)

Call when websocket is open, especially means good connectivity.

void set_fail_listener(con_listener const& l)

Call when failed in connecting.

void set_close_listener(close_listener const& l)

Call when closed or drop. See client::close_reason

//connection listener declare:enum close_reason
{
close_reason_normal,
close_reason_drop
};
typedef std::function<void(void)> con_listener;
typedef std::function<void(close_reason const& reason)> close_listener;

Socket listeners

void set_socket_open_listener(socket_listener const& l)

Set listener for socket connect event, called when any sockets being ready to send message.

void set_socket_close_listener(socket_listener const& l)

Set listener for socket close event, called when any sockets being closed, afterward, corresponding socket object will be cleared from client.

//socket_listener declare:typedef std::function<void(std::string const& nsp)> socket_listener;

Connect and Close

void connect(const std::string& uri)

Connect to socket.io server, e.g., client.connect("ws://localhost:3000");

void close()

Close the client, return immediately.

void sync_close()

Close the client, return until it is really closed.

bool opened() const

Check if client's connection is opened.

Transparent reconnecting

void set_reconnect_attempts(int attempts)

Set max reconnect attempts, set to 0 to disable transparent reconnecting.

void set_reconnect_delay(unsigned millis)

Set minimum delay for reconnecting, this is the delay for 1st reconnecting attempt, then the delay duration grows by attempts made.

void set_reconnect_delay_max(unsigned millis)

Set maximum delay for reconnecting.

void set_reconnecting_listener(con_listener const& l)

Set listener for reconnecting is in process.

void set_reconnect_listener(reconnect_listener const& l)

Set listener for reconnecting event, called once a delayed connecting is scheduled.

Namespace

socket::ptr socket(std::string const& nsp)

Get a pointer to a socket which is paired with the specified namespace.

Session ID

std::string const& get_sessionid() const

Get socket.io session id.

Message

message Base class of all message object.

int_message message contains a 64-bit integer.

double_message message contains a double.

string_message message contains a string.

array_message message contains a vector<message::ptr>.

object_message message contains a map<string,message::ptr>.

message::ptr pointer to message object, it will be one of its derived classes, judge by message.get_flag().

All designated constructor of message objects is hidden, you need to create message and get the message::ptr by [derived]_message:create().