全部文档
OneOS简介 硬件支持 快速开发指南 编译构造工具 API参考文档 高级语言 用户编程手册 OnePos定位 应用笔记 FAQ

WebSocket API

简介

OneOS websocket组件提供websocket client连接、监听、发送等功能,用户可以简单调用websocket组件API,快速实现websocket client连接。

其中websocket client提供的api可以参考“Component\components\net\protocols\websocket\api\client\include\ws_client.h”,重要的数据结构可以参考“Component\components\net\protocols\websocket\core\include\ws_def.h”。

API列表

接口 说明
ws_client_create 创建WebSocket client对象
ws_client_destroy 销毁WebSocket client实例对象
ws_client_event_register 注册事件响应函数
ws_client_get_state 查询当前连接状态
ws_client_get_by_url 根据url查询WebSocket client文件描述符
ws_client_start 启动WebSocket client服务,包括TCP建链及HTTP握手过程
ws_client_send 发送报文
ws_client_stop 停止WebSocket client服务,并通知服务器
ws_client_get_default_header 获取默认HTTP握手头字符串

ws_create

该接口用于创建websocket实例对象

int ws_client_create(const char *url)
参数 说明
url 服务器地址url字符串,可以使用域名方式及IP,如果url携带端口号,则使用url端口号,否则使用ws/wws默认端口号。
例:url="ws://echo.websocket.org/" 或 url="ws://127.0.0.1:1234"
返回 说明
小于0 操作失败
其他 WebSocket clinet文件描述符

ws_destroy

该接口用于销毁websocket对象。

void ws_client_destroy(int fd)
参数 说明
fd WebSocket clinet文件描述符
返回 说明

ws_event_register

该接口用于websocket事件注册

int ws_client_event_register(int fd, struct ws_event *event)
参数 说明
fd WebSocket clinet文件描述符
event 事件响应函数结构体指针
返回 说明
OS_EOK 操作成功
其他 操作失败

ws_get_state

该接口用于查询websocket当前连接状态

ws_state_t ws_client_get_state(int fd)
参数 说明
fd WebSocket clinet文件描述符
返回 说明
ws_state_t 当前连接状态,具体信息参考enum ws_state

ws_client_get_by_url

该接口用于查询子协议类型,仅当连接成功后有效。

int ws_client_get_by_url(const char *url)
参数 说明
url 服务器地址url字符串
返回 说明
小于0 操作失败
其他 WebSocket clinet文件描述符

ws_client_start

该接口用于启动websocket client服务,启动成功后,可以正常响应已注册的事件,及发送报文等操作。

注:启动时将初始化websocket client线程,其栈深度在menuconfig中定义。

int ws_client_start(int fd, os_uint8_t time_out, char *header)
参数 说明
fd websocket clinet文件描述符
time_out websocket clinet启动超时时间,包括TCP建链及HTTP握手。0为永久等待连接成功
header HTTP请求头字符串地址,header=NULL时,不启动HTTP握手
返回 说明
OS_EOK 操作成功
其他 操作失败

ws_client_send

该接口用于数据报文发送,支持文本、二进制、PING、PONG格式数据发送。

int ws_client_send(int fd, os_uint8_t *data, os_uint16_t len, ws_data_type_t type)
参数 说明
fd WebSocket clinet文件描述符
data 待发送数据地址
len 待发送数据长度
type 待发送数据类型
返回 说明
OS_EOK 发送成功
其他 发送失败

ws_client_stop

该接口用于停止websocket client服务,并将消息通知到服务器。待连接关闭后将停止websocket服务,停止服务后无法正常响应事件、发送报文等操作。

void ws_client_stop(int fd, os_uint16_t code)
参数 说明
fd WebSocket clinet文件描述符
code 关闭原因编码,可以使用enum ws_close_type,也可以用户自定义
返回 说明

ws_client_get_default_header

该接口用于生成默认HTTP请求头字符串。

char *ws_client_get_default_header(int fd)
参数 说明
fd WebSocket clinet文件描述符
返回 说明
NULL 生成失败
其他 握手头字符串地址

使用示例

static void task_entry(void *parameter)
{
    int fd = ws_client_create(url);    //创建websocket client实例

    if (fd < 0)
    {
        LOG_EXT_E("client create fail!");
        return;
    }

    printf("ws satate:%d\n", ws_client_get_state(fd));

    int ret = ws_client_event_register(fd, &event);    //注册用户事件回调函数
    if (ret != OS_EOK)
    {
        LOG_EXT_E("ws event registe fail!");
        return;
    }
    ret = ws_client_start(fd, 3, ws_client_get_default_header(fd));    //启动websocket client连接

    if (ret != OS_EOK)
    {
        LOG_EXT_E("ws client start fail!");
        return;
    }

    while (OS_TRUE)
    {
        os_uint8_t tx_buf[WEBSOCKET_CLIENT_MAX_BUFF_DEP];        
        ws_client_send(fd, tx_buf, WEBSOCKET_CLIENT_MAX_BUFF_DEP, WS_DATA_TXT_DATA);    //向服务器端发送数据
        os_task_msleep(5000);
    }

    ws_client_stop(fd, 0);
    ws_client_destroy(fd);
    return;
}

results matching ""

    No results matching ""

    返回顶部