STTNet
 全部  命名空间 文件 函数 变量 类型定义 枚举 枚举值 宏定义 
Public 成员函数 | 所有成员列表
stt::network::WebSocketClient类 参考

Websocket客户端操作的类 -如果需要重新设置TLS/Https加密的证书,目前需要销毁对象后重新构造 底层TCP默认是阻塞的 更多...

#include <sttnet.h>

类 stt::network::WebSocketClient 继承关系图:
stt::network::TcpClient

Public 成员函数

 WebSocketClient (const bool &TLS=false, const char *ca="", const char *cert="", const char *key="", const char *passwd="")
 WebSocketClient类的构造函数 更多...
 
void setFunction (std::function< bool(const std::string &message, WebSocketClient &k)> fc)
 设置收到服务端消息后的回调函数 注册一个回调函数 更多...
 
bool connect (const std::string &url, const int &min=20)
 连接到websocket服务器 更多...
 
bool sendMessage (const std::string &message, const std::string &type="0001")
 发送 WebSocket 消息 更多...
 
void close (const std::string &closeCodeAndMessage, const bool &wait=true)
 发送关闭帧并关闭 WebSocket 连接(简化方式) 更多...
 
void close (const short &code=1000, const std::string &message="bye", const bool &wait=true)
 发送关闭帧并关闭 WebSocket 连接(标准方式) 更多...
 
bool isConnect ()
 返回连接状态 更多...
 
std::string getUrl ()
 如果连接到了服务器 返回url 更多...
 
std::string getServerIp ()
 如果连接到了服务器 返回服务器ip 更多...
 
std::string getServerPort ()
 如果连接到了服务器 返回服务器端口 更多...
 
 ~WebSocketClient ()
 WebSocketClient类的析构函数,销毁对象时候会优雅退出断开连接 更多...
 

详细描述

Websocket客户端操作的类 -如果需要重新设置TLS/Https加密的证书,目前需要销毁对象后重新构造 底层TCP默认是阻塞的

构造及析构函数说明

stt::network::WebSocketClient::WebSocketClient ( const bool &  TLS = false,
const char *  ca = "",
const char *  cert = "",
const char *  key = "",
const char *  passwd = "" 
)
inline

WebSocketClient类的构造函数

参数
TLStrue:启用wss加密 false:不启用wss加密 (默认为false不启用)
caCA 根证书路径(若启用TLS加密则必须填这个 默认空)
cert客户端证书路径(可选 默认空)
key客户端私钥路径(可选 默认空)
passwd私钥解密密码(可选 默认空)
注解
-ca用来校验对方服务器的证书是否可信(可以用操作系统自带的根证书验证) -如果启用了wss加密 ca必填 其他可选 -如果服务端要求客户端身份认证(双向 TLS/SSL),你需要提供一个有效的客户端证书。
stt::network::WebSocketClient::~WebSocketClient ( )

WebSocketClient类的析构函数,销毁对象时候会优雅退出断开连接

成员函数说明

void stt::network::WebSocketClient::close ( const std::string &  closeCodeAndMessage,
const bool &  wait = true 
)

发送关闭帧并关闭 WebSocket 连接(简化方式)

直接传入编码后的关闭 payload,其中前两字节为关闭码(big-endian), 后续为 UTF-8 编码的关闭原因描述,用于简化调用。

参数
closeCodeAndMessage编码后的关闭帧 payload(2 字节关闭码 + 可选消息)
wait是否等待底层监听线程/epoll事件处理后退出
void stt::network::WebSocketClient::close ( const short &  code = 1000,
const std::string &  message = "bye",
const bool &  wait = true 
)

发送关闭帧并关闭 WebSocket 连接(标准方式)

构建符合 RFC 6455 的关闭帧(opcode = 0x8),帧 payload 包含关闭码(2 字节)与可选关闭原因字符串。

参数
codeWebSocket 关闭码,常见包括:
  • 1000:正常关闭(Normal Closure)
  • 1001:终端离开(Going Away)
  • 1002:协议错误(Protocol Error)
  • 1003:不支持的数据类型(Unsupported Data)
  • 1006:非正常关闭(无关闭帧,程序内部使用)
  • 1008:策略违规(Policy Violation)
  • 1011:服务器内部错误(Internal Error)
message可选关闭原因,供调试或日志记录用
wait是否等待底层监听线程/epoll事件处理后退出
bool stt::network::WebSocketClient::connect ( const std::string &  url,
const int &  min = 20 
)

连接到websocket服务器

参数
urlws/wss的完整url(注意需要显式指定端口和路径) 如:wss://google.com 要写成wss://google.com:443/ (补全:443和/)
min心跳时间,单位分钟 (默认为20分钟)
警告
需要ws/wss的完整url(注意需要显式指定端口和路径) 如:wss://google.com 要写成wss://google.com:443/ (补全:443和/)
std::string stt::network::WebSocketClient::getServerIp ( )
inline

如果连接到了服务器 返回服务器ip

返回
返回服务器ip
std::string stt::network::WebSocketClient::getServerPort ( )
inline

如果连接到了服务器 返回服务器端口

返回
返回服务器端口
std::string stt::network::WebSocketClient::getUrl ( )
inline

如果连接到了服务器 返回url

返回
返回url
bool stt::network::WebSocketClient::isConnect ( )
inline

返回连接状态

返回
true:和服务器存在连接 false:没有连接
bool stt::network::WebSocketClient::sendMessage ( const std::string &  message,
const std::string &  type = "0001" 
)

发送 WebSocket 消息

根据 WebSocket 协议,封装并发送一条带掩码的数据帧(客户端必须使用掩码), 支持根据 payload 长度自动选择帧格式:

  • payload <= 125 字节:使用 1 字节长度
  • 126 <= payload <= 65535:使用 2 字节扩展长度(附加 126 标记)
  • payload > 65535:使用 8 字节扩展长度(附加 127 标记)
参数
message要发送的消息内容(已编码为文本或二进制)
type指定消息类型的自定义字段(通常是 WebSocket 帧的 opcode) 约定格式为 "1000" + type,其中:
  • "0001" 表示文本帧(Text Frame)
  • "0010" 表示二进制帧(Binary Frame)
  • "1000" 表示连接关闭(Close Frame)
  • "1001" 表示 Ping 帧
  • "1010" 表示 Pong 帧 请根据内部约定使用,默认使用 text(文本帧)
返回
true 发送成功
false 发送失败(可能因连接未建立或发送异常)
void stt::network::WebSocketClient::setFunction ( std::function< bool(const std::string &message, WebSocketClient &k)>  fc)
inline

设置收到服务端消息后的回调函数 注册一个回调函数

参数
fc一个函数或函数对象,用于收到服务端消息后处理逻辑 -参数:string &message - 要处理的套接字 WebsocketClient &k - 当前对象的引用 -返回: bool - 返回true处理成功,返回false处理失败
注解
传入的函数应该有如下签名 bool func(const std::string &message,WebSocketClient &k)
如果处理失败了 会直接关闭整个websocket连接

该类的文档由以下文件生成: