通道类 ```c++ class Channel { // 返回底层的io结构体指针 hio_t* io() { return io_; } // 返回socket文件描述符 int fd() { return fd_; } // 返回一个唯一标示id uint32_t id() { return id_; } // 返回错误码 int error() { return hio_error(io_); } // 获取/设置/新建/删除 上下文 void* context(); void setContext(void* ctx); template T* newContext(); template T* getContext(); template void deleteContext(); // 获取/设置/新建/删除 上下文智能指针 std::shared_ptr contextPtr(); void setContextPtr(const std::shared_ptr& ctx); void setContextPtr(std::shared_ptr&& ctx); template std::shared_ptr newContextPtr(); template std::shared_ptr getContextPtr(); void deleteContextPtr(); // 是否打开状态 bool isOpened(); // 是否关闭状态 bool isClosed(); // 开始读 int startRead(); // 停止读 int stopRead(); // 读一次 int readOnce(); // 读一个字符串 int readString(); // 读一行 int readLine(); // 读取N个字节 int readBytes(int len); // 写 int write(const void* data, int size); int write(Buffer* buf); int write(const std::string& str); // 设置最大读缓存 void setMaxReadBufsize(uint32_t size); // 设置最大写缓存 void setMaxWriteBufsize(uint32_t size); // 获取当前写缓存大小 size_t writeBufsize(); // 是否写完成 bool isWriteComplete(); // 关闭 int close(bool async = false); // 读回调 std::function onread; // 写回调 std::function onwrite; // 关闭回调 std::function onclose; }; // SocketChannel 继承自 Channel class SocketChannel : public Channel { // 连接状态回调 std::function onconnect; // 心跳回调 std::function heartbeat; // 启用SSL/TLS加密通信 int enableSSL(); // 是否是SSL/TLS加密通信 bool isSSL(); // 设置SSL int setSSL(hssl_t ssl); // 设置SSL_CTX int setSslCtx(hssl_ctx_t ssl_ctx); // 新建SSL_CTX int newSslCtx(hssl_ctx_opt_t* opt); // 设置主机名 int setHostname(const std::string& hostname); // 设置连接超时 void setConnectTimeout(int timeout_ms); // 设置关闭超时 (说明:非阻塞写队列非空时,需要等待写完成再关闭) void setCloseTimeout(int timeout_ms); // 设置读超时 (一段时间没有数据到来便自动关闭连接) void setReadTimeout(int timeout_ms); // 设置写超时 (一段时间没有数据发送便自动关闭连接) void setWriteTimeout(int timeout_ms); // 设置keepalive超时 (一段时间没有数据收发便自动关闭连接) void setKeepaliveTimeout(int timeout_ms); // 设置心跳 (定时发送心跳包) void setHeartbeat(int interval_ms, std::function fn); // 设置拆包规则 void setUnpack(unpack_setting_t* setting); // 开始连接 int startConnect(int port, const char* host = "127.0.0.1"); int startConnect(struct sockaddr* peeraddr); int startConnect(); // 是否已连接 bool isConnected(); // 返回本地地址 std::string localaddr(); // 返回对端地址 std::string peeraddr(); }; // WebSocketChannel 继承自 SocketChannel class WebSocketChannel : public SocketChannel { // 发送文本帧 int send(const std::string& msg, enum ws_opcode opcode = WS_OPCODE_TEXT, bool fin = true); // 发送二进制帧 int send(const char* buf, int len, enum ws_opcode opcode = WS_OPCODE_BINARY, bool fin = true); // 分片发送 int send(const char* buf, int len, int fragment, enum ws_opcode opcode = WS_OPCODE_BINARY); // 关闭 int close(); }; ```