客户端框架


客户端框架

本节介绍 VSOA 客户端框架的开发流、步骤和注意事项。

开发流程

创建客户端时,不同的开发语言在流程上略有区别,但总体都是按照如下步骤进行:

开发步骤

步骤 1:创建客户端

在使用 Java 、 JavaScript 和 Golang 的开发语言方式中,需要在创建客户端时指定其通信密码,而使用 C 的开发语言方式中是在连接服务端时指定通信密码。

步骤 2:连接微服务

因为 VSOA 提供了 Position 位置服务功能,所以客户端可以使用微服务名称查询微服务的地址。

需要注意的是,需要指定 Position 位置服务的地址和端口,详情见 了解 VSOA 中的 "VSOA 位置服务配置方法",也可在代码中手动指定 Position 服务的位置。

说明:
在 Node.js 的环境中,socket.AF_INET 应为 vsoa.AF_INET,详情可见 https://www.npmjs.com/package/vsoaopen in new window

步骤 3:监听事件或循环

与 VSOA 微服务建立连接成功之后,它应当始终监听所有的 VSOA 输入事件。

说明:

在 Node.js 的环境中,不需要事件循环。

客户端机器人

由以上范例可见,使用 C 语言搭建 VSOA 客户端时步骤繁琐,且若服务端未启动时,客户端也将因连接服务端失败而不能正常运行。VSOA 提供了客户端机器人功能,客户端机器人可以自动连接指定的服务端并保持连接,使得开发者可以更加关注业务逻辑实现。

同样,在该范例中,因为独立的位置服务或 ECSM 的存在,不需要指定任何 IP 和端口信息。

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>
#ifdef SYLIXOS
#include <sys/vproc.h>
#endif
#include "vsoa_cliauto.h"

/* My server password */
#define MY_SERVER_PASSWD "123456"

/* My client */
static vsoa_client_t *client;

/* My client auto */
static vsoa_client_auto_t *cliauto;

/*
 * main function
 */
int main (int argc, char **argv)
{
#ifdef SYLIXOS
    vprocExitModeSet(getpid(), LW_VPROC_EXIT_FORCE);
#endif

    /*
     * Create client auto robot
     */
    cliauto = vsoa_client_auto_create(NULL, NULL);
    client  = vsoa_client_auto_handle(cliauto);

    /*
     * Client auto robot start
     * The robot will automatically connect to the specified server and maintain the connection.
     * At this time, the developer only needs to focus on the business.
     */
    vsoa_client_auto_start(cliauto, "vsoa://light_server", MY_SERVER_PASSWD, 
                           NULL, 0, 1000, 1000, 1000);

    while (true) {
        sleep(1);
    }
}

说明:
VSOA 客户端机器人接口说明可参考 C 扩展编程手册

注意事项

C/C++ 客户端编译时需链接如下表所示的 VSOA 动态库,在 RealEvo-IDE 中配置时请参考 C/C++ 开发示例,Linux 下开发请参考 搭建 Linux 运行环境 提供的 C 语言范例进行配置。

库名称功能
libvsoa-json.so提供 JSON 功能
libvsoa-client.so提供客户端功能
libvsoa-parser.so提供参数解析功能