STTNet 0.7.0
载入中...
搜索中...
未找到
stt::network::WebSocketServerFDHandler类 参考

WebSocket协议的操作类 仅传入套接字,然后使用这个类进行WebSocket的操作 更多...

#include <sttnet.h>

类 stt::network::WebSocketServerFDHandler 继承关系图:
stt::network::TcpFDHandler

Public 成员函数

void setFD (const int &fd, SSL *ssl=nullptr, const bool &flag1=false, const bool &flag2=true)
 初始化对象,传入套接字等参数
 
int getMessage (TcpFDInf &Tcpinf, WebSocketFDInformation &Websocketinf, const unsigned long &buffer_size, const int &ii=1)
 获取一条websocket消息
 
bool sendMessage (const std::string &msg, const std::string &type="0001")
 发送一条websocket信息
 
- Public 成员函数 继承自 stt::network::TcpFDHandler
void setFD (const int &fd, SSL *ssl, const bool &flag1=false, const bool &flag2=false, const int &sec=-1)
 传入套接字初始化对象
 
void setTransportFunctions (std::function< int(std::string)> sendFunction, std::function< void()> closeFunction={})
 由服务端 Reactor 注入异步发送和关闭通道。
 
int getFD ()
 获取该对象的套接字
 
SSL * getSSL ()
 获取该对象的加密SSL句柄
 
void close (const bool &cle=true)
 关闭对象
 
void blockSet (const int &sec=-1)
 设置对象中的套接字为阻塞模式
 
void unblockSet ()
 设置对象中的套接字为非阻塞模式
 
bool multiUseSet ()
 设置对象中的套接字为SO_REUSEADDR模式
 
bool isConnect ()
 判断对象是否有套接字绑定
 
int sendData (const std::string &data, const bool &block=true)
 向已连接的套接字发送字符串数据。
 
int sendData (const char *data, const uint64_t &length, const bool &block=true)
 向已连接的套接字发送指定长度的二进制数据。
 
int recvDataByLength (std::string &data, const uint64_t &length, const int &sec=2)
 从已连接的套接字中阻塞接收指定长度的数据到字符串
 
int recvDataByLength (char *data, const uint64_t &length, const int &sec=2)
 从已连接的套接字中阻塞接收指定长度的数据到char*容器
 
int recvData (std::string &data, const uint64_t &length)
 从已连接的套接字中接收一次数据到string字符串容器
 
int recvData (char *data, const uint64_t &length)
 从已连接的套接字中接收一次数据到char*容器
 

额外继承的成员函数

- Public 属性 继承自 stt::network::TcpFDHandler
bool flag3 =false
 如果sendData的block=true,如果发送过程中连接断开,这个标志位会置为true
 
- Protected 属性 继承自 stt::network::TcpFDHandler
int fd =-1
 
bool flag1 =false
 
bool flag2 =false
 
SSL * ssl =nullptr
 
int sec =-1
 
std::function< int(std::string)> queuedSendFunction
 
std::function< void()> queuedCloseFunction
 

详细描述

WebSocket协议的操作类 仅传入套接字,然后使用这个类进行WebSocket的操作

成员函数说明

◆ getMessage()

int stt::network::WebSocketServerFDHandler::getMessage ( TcpFDInf & Tcpinf,
WebSocketFDInformation & Websocketinf,
const unsigned long & buffer_size,
const int & ii = 1 )

获取一条websocket消息

参数
Tcpinf保存底层tcp状态的信息
Websocketinf保存websocket协议状态信息
buffer_size服务器定义的解析缓冲区的大小(单位为字节)
ii记录解析次数,一些场合用得到 默认为1
返回
-1:获取失败 0:一般报文 1:关闭帧 2:心跳确认报文 3:心跳报文 4: 等待数据
注解
服务端严格要求客户端帧带 mask,校验 RSV/opcode/最小长度、控制帧、关闭码和 UTF-8, 并支持分片消息之间穿插 ping/pong。累计消息不会超过 buffer_size。

◆ sendMessage()

bool stt::network::WebSocketServerFDHandler::sendMessage ( const std::string & msg,
const std::string & type = "0001" )

发送一条websocket信息

参数
msg需要发送的websocket信息
type指定消息类型的自定义字段(通常是 WebSocket 帧的 opcode) 约定格式为 "1000" + type,其中:
  • "0001" 表示文本帧(Text Frame)
  • "0010" 表示二进制帧(Binary Frame)
  • "1000" 表示连接关闭(Close Frame)
  • "1001" 表示 Ping 帧
  • "1010" 表示 Pong 帧 请根据内部约定使用,默认使用 text(文本帧)
返回
true:帧已发送,或在服务器回调场景中已被有界队列接受;false:类型、控制帧长度或发送失败。
注解
服务端帧不会加 mask;Ping、Pong、Close payload 最大 125 字节。

◆ setFD()

void stt::network::WebSocketServerFDHandler::setFD ( const int & fd,
SSL * ssl = nullptr,
const bool & flag1 = false,
const bool & flag2 = true )
inline

初始化对象,传入套接字等参数

参数
fd套接字
sslTLS加密的SSL句柄(默认为nullptr)
flag1true:启用非阻塞模式 false:启用阻塞模式 (默认为false,即启用阻塞模式)
flag2true:启用SO_REUSEADDR模式 false:不启用SO_REUSEADDR模式 (默认为true,即启用SO_REUSEADDR模式)

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