acl
3.5.3.0
|
#include <websocket.hpp>
Public 成员函数 | |
websocket (socket_stream &client) | |
~websocket (void) | |
websocket & | reset (void) |
socket_stream & | get_stream (void) const |
websocket & | set_frame_fin (bool yes) |
websocket & | set_frame_rsv1 (bool yes) |
websocket & | set_frame_rsv2 (bool yes) |
websocket & | set_frame_rsv3 (bool yes) |
websocket & | set_frame_opcode (unsigned char type) |
websocket & | set_frame_payload_len (unsigned long long len) |
websocket & | set_frame_masking_key (unsigned int mask) |
bool | send_frame_data (const void *data, size_t len) |
bool | send_frame_data (void *data, size_t len) |
bool | send_frame_data (const char *str) |
bool | send_frame_data (char *str) |
bool | send_frame_pong (const void *data, size_t len) |
bool | send_frame_pong (void *data, size_t len) |
bool | send_frame_pong (const char *str) |
bool | send_frame_pong (char *str) |
bool | send_frame_ping (const void *data, size_t len) |
bool | send_frame_ping (void *data, size_t len) |
bool | send_frame_ping (const char *str) |
bool | send_frame_ping (char *str) |
bool | send_frame_data (aio_socket_stream &conn, void *data, size_t len) |
bool | send_frame_text (aio_socket_stream &conn, char *data, size_t len) |
bool | send_frame_binary (aio_socket_stream &conn, void *data, size_t len) |
bool | send_frame_ping (aio_socket_stream &conn, void *data, size_t len) |
bool | send_frame_pong (aio_socket_stream &conn, void *data, size_t len) |
bool | read_frame_head (void) |
int | read_frame_data (void *buf, size_t size) |
bool | peek_frame_head (void) |
int | peek_frame_data (char *buf, size_t size) |
int | peek_frame_data (string &buf, size_t size) |
bool | is_head_finish (void) const |
bool | eof (void) |
const frame_header & | get_frame_header (void) const |
bool | frame_is_fin (void) const |
bool | frame_is_rsv1 (void) const |
bool | frame_is_rsv2 (void) const |
bool | frame_is_rsv3 (void) const |
unsigned char | get_frame_opcode (void) const |
bool | frame_has_mask (void) const |
unsigned long long | get_frame_payload_len (void) const |
unsigned int | get_frame_masking_key (void) const |
unsigned long long | get_frame_payload_nread (void) const |
额外继承的成员函数 | |
Protected 成员函数 继承自 acl::acl::noncopyable | |
noncopyable () | |
~noncopyable () | |
websocket 基础类
在文件 websocket.hpp 第 71 行定义.
acl::websocket::websocket | ( | socket_stream & | client | ) |
构造方法
client | {socket_stream&} |
acl::websocket::~websocket | ( | void | ) |
bool acl::websocket::eof | ( | void | ) |
判断当前网络连接是否已经断开
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
|
inline |
bool acl::websocket::is_head_finish | ( | void | ) | const |
判断当前是否已读完 websocket 帧头数据
int acl::websocket::peek_frame_data | ( | char * | buf, |
size_t | size | ||
) |
用在非阻塞网络通信中,尝试读取 websocket 数据体,可以循环调用本方法
buf | {char*} 存放读到的数据 |
size | {size_t} buf 的空间大小 |
int acl::websocket::peek_frame_data | ( | string & | buf, |
size_t | size | ||
) |
bool acl::websocket::peek_frame_head | ( | void | ) |
用在非阻塞网络通信中,尝试读取 websocket 数据头,可以循环调用本方法 走到该方法返回 true 表示读到了完整的 websocket 头;如果返回 false, 则需通过 eof() 方法来判断网络连接是否已经断开,如 eof() 返回 true, 则应释放本对象
int acl::websocket::read_frame_data | ( | void * | buf, |
size_t | size | ||
) |
读取数据帧数据体,需要循环调用本方法直至正常结束或出错
buf | {void*} 存放数据的缓冲区 |
size | {size_t} buf 数据缓冲区大小 |
bool acl::websocket::read_frame_head | ( | void | ) |
读取数据帧帧头
websocket& acl::websocket::reset | ( | void | ) |
当类对象被重复使用时,需要通过本方法将状态重重
bool acl::websocket::send_frame_binary | ( | aio_socket_stream & | conn, |
void * | data, | ||
size_t | len | ||
) |
bool acl::websocket::send_frame_data | ( | const void * | data, |
size_t | len | ||
) |
发送数制帧中的数据体,可以循环调用本方法发送本帧的数据,发送数据 总长度(即多次调用本方法的数据长度之和)应与 set_frame_payload_len 方法设置的值相同
data | {const void*} |
len | {size_t} |
bool acl::websocket::send_frame_data | ( | void * | data, |
size_t | len | ||
) |
bool acl::websocket::send_frame_data | ( | const char * | str | ) |
bool acl::websocket::send_frame_data | ( | char * | str | ) |
bool acl::websocket::send_frame_data | ( | aio_socket_stream & | conn, |
void * | data, | ||
size_t | len | ||
) |
调用非阻塞发送接口异步发送数据,当发送完数据后,应用层应该调用 reset() 方法重置状态,在发送一个数据包前,应用层需要调用以上的 set_frame_xxx 方法用来设置每一个数据包的帧头信息
conn | {aio_socket_stream&} |
data | {void*} 要发送的数据,内部会被修改 |
len | {size_t} data 数据长度 |
bool acl::websocket::send_frame_ping | ( | const void * | data, |
size_t | len | ||
) |
发送 PING 数据帧
data | {const void*} PING 数据帧的数据载体,可以为 NULL |
len | {size_t} data 数据长度,当 data 为 NULL 或 len 为 0 时, 表示没有数据载荷 |
bool acl::websocket::send_frame_ping | ( | void * | data, |
size_t | len | ||
) |
bool acl::websocket::send_frame_ping | ( | const char * | str | ) |
bool acl::websocket::send_frame_ping | ( | char * | str | ) |
bool acl::websocket::send_frame_ping | ( | aio_socket_stream & | conn, |
void * | data, | ||
size_t | len | ||
) |
bool acl::websocket::send_frame_pong | ( | const void * | data, |
size_t | len | ||
) |
发送 PONG 数据帧
data | {const void*} PONG 数据帧的数据载体,可以为 NULL |
len | {size_t} data 数据长度,当 data 为 NULL 或 len 为 0 时, 表示没有数据载荷 |
bool acl::websocket::send_frame_pong | ( | void * | data, |
size_t | len | ||
) |
bool acl::websocket::send_frame_pong | ( | const char * | str | ) |
bool acl::websocket::send_frame_pong | ( | char * | str | ) |
bool acl::websocket::send_frame_pong | ( | aio_socket_stream & | conn, |
void * | data, | ||
size_t | len | ||
) |
bool acl::websocket::send_frame_text | ( | aio_socket_stream & | conn, |
char * | data, | ||
size_t | len | ||
) |
websocket& acl::websocket::set_frame_fin | ( | bool | yes | ) |
设置是否结束的标志位
yes | {bool} |
websocket& acl::websocket::set_frame_masking_key | ( | unsigned int | mask | ) |
设置数据帧数据的掩码值,客户端模式下必须设置此项
mask | {unsigned int} |
websocket& acl::websocket::set_frame_opcode | ( | unsigned char | type | ) |
设置数据帧类型,参见上面定义:FRAME_XXX
type | {unsigned char} |
websocket& acl::websocket::set_frame_payload_len | ( | unsigned long long | len | ) |
设置本数据帧数据载体的总长度
len | {unsigned long long} |
websocket& acl::websocket::set_frame_rsv1 | ( | bool | yes | ) |
设置保留标志位
yes | {bool} |
websocket& acl::websocket::set_frame_rsv2 | ( | bool | yes | ) |
设置保留标志位
yes | {bool} |
websocket& acl::websocket::set_frame_rsv3 | ( | bool | yes | ) |
设置保留标志位
yes | {bool} |