类 jsstp_t

jsstp对象

jsstp

jsstp.type

let my_jsstp=new jsstp.type("my_coooool_jsstp",sstp_server_url);

可索引

  • [key: `On${string}`]: simple_event_caller

    匹配事件名称以产生简易调用器

    访问反射

    let data=await jsstp.OnTest(123,"abc");
    
  • [key: `Get${string}`]: simple_list_command_caller

    匹配事件名称以产生简易调用器

    访问反射

    let data=await jsstp.GetNames();
    
  • [key: `Set${string}`]: simple_command_caller

    匹配事件名称以产生简易调用器

    访问反射

    let data=await jsstp.SetCookie("abc","def");
    

构造函数

  • 基础jsstp对象

    参数

    • 可选sender_name: String

      对象与服务器交互时的发送者名称

    • 可选host: String

      目标服务器地址

    返回 jsstp_t

方法

  • 获取当前ghost是否可用

    返回 Promise<Boolean>

    ghost是否可用

    if(await jsstp.available())
    //do something
    else
    console.error("ghost不可用,请检查ghost是否启动");
  • 对于所有ghost的fmoinfo进行处理

    类型参数

    • result_T

    参数

    • operation: ((fmo_info: single_fmo_info_t) => result_T)

      操作函数

    返回 Promise<info_object<string, result_T>>

  • 以约定好的结构获取支持的事件,需要ghost支持Get_Supported_Events事件
    若不确定ghost的支持情况,使用ghost_events_queryer_t(通过jsstp_t.new_event_queryer获取)来查询

    返回 Promise<{
        external: string[];
        local: string[];
    }>

    包含local和external两个数组的Object

    jsstp.get_supported_events().then(result => console.log(result));
    
    //示例代码(AYA):
    SHIORI_EV.On_Get_Supported_Events: void {
    _L=GETFUNCLIST('On')
    _base_local_event_funcs=IARRAY
    foreach _L;_func{
    if SUBSTR(_func,2,1) == '_'
    _func=SUBSTR(_func,3,STRLEN(_func))
    _base_local_event_funcs,=_func
    }
    _L=GETFUNCLIST('SHIORI_EV.On')
    foreach _L;_func{
    if SUBSTR(_func,12,1) == '_'
    _func=SUBSTR(_func,13,STRLEN(_func))
    _base_local_event_funcs,=_func
    }
    SHIORI_FW.Make_X_SSTP_PassThru('local',ARRAYDEDUP(_base_local_event_funcs))
    _L=GETFUNCLIST('ExternalEvent.On')
    _base_external_event_funcs=IARRAY
    foreach _L;_func{
    if SUBSTR(_func,16,1) == '_'
    _func=SUBSTR(_func,17,STRLEN(_func))
    _base_external_event_funcs,=_func
    }
    _L=GETFUNCLIST('SHIORI_EV.ExternalEvent.On')
    foreach _L;_func{
    if SUBSTR(_func,26,1) == '_'
    _func=SUBSTR(_func,27,STRLEN(_func))
    _base_external_event_funcs,=_func
    }
    SHIORI_FW.Make_X_SSTP_PassThru('external',ARRAYDEDUP(_base_external_event_funcs))
    }
    SHIORI_EV.ExternalEvent.On_Get_Supported_Events{
    SHIORI_EV.On_Get_Supported_Events
    }
  • 判断是否存在某个事件
    若可能频繁调用,使用ghost_events_queryer_t(通过jsstp_t.new_event_queryer获取)来查询

    参数

    • event_name: String

      事件名

    • 可选security_level: security_level_t

      安全等级

    返回 Promise<Boolean>

    是否存在

    jsstp.has_event("OnTest").then(result => console.log(result));
    
    //示例代码(AYA):
    SHIORI_EV.On_Has_Event : void {
    _event_name=reference.raw[0]
    _SecurityLevel=reference.raw[1]
    if !_SecurityLevel
    _SecurityLevel=SHIORI_FW.SecurityLevel
    if SUBSTR(_event_name,0,2) != 'On'
    _event_name='On_'+_event_name
    _result=0
    if TOLOWER(_SecurityLevel) == 'external'
    _event_name='ExternalEvent.'+_event_name
    _result=ISFUNC(_event_name)
    if !_result
    _result=ISFUNC('SHIORI_EV.'+_event_name)
    SHIORI_FW.Make_X_SSTP_PassThru('Result',_result)
    }
    SHIORI_EV.ExternalEvent.On_Has_Event{
    SHIORI_EV.On_Has_Event
    }
  • 获取一个用于查询ghost所支持事件的queryer

    返回 Promise<ghost_events_queryer_t>

    查询支持事件的queryer

    jsstp.new_event_queryer().then(queryer =>
    queryer.check_event("OnTest").then(result =>
    console.log(result)
    )
    );

SSTP基础通讯类型

COMMUNICATE: method_caller<sstp_info_t, [common_communicate_sstp_content_t]>
EXECUTE: method_caller<sstp_info_t, [common_execute_sstp_content_t]>
GIVE: method_caller<sstp_info_t, [common_give_sstp_content_t]>
NOTIFY: method_caller<sstp_info_t, [common_event_sstp_content_t]>
SEND: method_caller<sstp_info_t, [common_event_sstp_content_t]>

反射器成员

  • get command(): {
        [command_name: string]: simple_command_caller;
    }
  • 用于获取指定命令的执行器的代理

    返回 {
        [command_name: string]: simple_command_caller;
    }

    • [command_name: string]: simple_command_caller
    jsstp.command.GetFMO();
    
  • get event(): {
        [event_name: string]: simple_event_caller;
    }
  • 用于获取指定事件的简单调用器的代理

    返回 {
        [event_name: string]: simple_event_caller;
    }

    • [event_name: string]: simple_event_caller
    jsstp.event.OnTest("test");
    

基础送信函数

  • 发送报文

    类型参数

    • T

    参数

    • sstphead: String

      报文头

    • info: Object

      报文体

    • result_type: (new (str: string) => T)

      返回结果的类型,默认为sstp_info_t

        • new (str): T
        • 参数

          • str: string

          返回 T

    返回 Promise<T>

    返回一个promise

  • 发送报文,但是不对返回结果进行处理

    参数

    • sstphead: String

      报文头

    • info: Object

      报文体

    返回 Promise<String>

    返回一个promise

  • 以文本发送报文并以文本接收返信

    参数

    • info: any

      报文体(文本)

    返回 Promise<String>

    返回一个promise

复制函数

  • 复制一个新的jsstp对象对于给定的fmo_info

    参数

    • fmo_info: single_fmo_info_t

      目标ghost的fmo_info

    返回 jsstp_with_ghost_info_t

    新的指向目标ghost的jsstp对象

属性

RequestHeader: {
    [key: string]: string;
}

在fecth时使用的header

default_info: base_sstp_content_t

默认的报文内容

default_security_level: security_level_t

查询默认的安全等级,在nodejs中为"local",在浏览器中为"external"

proxy: jsstp_t

自身代理

sstp_version_table: {
    [method: string]: Number;
}

SSTP协议版本号列表

类Promise函数

  • 获取当前ghost是否可用

    类型参数

    • result_T = undefined

    参数

    返回 Promise<result_T>

    ghost是否可用,若可用则以jsstp为参数执行resolve,否则执行reject

    jsstp.if_available(() => {
    //do something
    });
    xxx.then(v => jsstp.if_available()).then(() => {
    //do something
    });

类型

base_sstp_info_t: typeof base_sstp_info_t

基础sstp报文类

let info = new jsstp.sstp_info_t("SSTP/1.4 200 OK\r\nCharset: UTF-8\r\nSender: SSTPクライアント\r\nScript: \\h\\s0テストー。\\u\\s[10]テストやな。\r\nOption: notranslate\r\n\r\n");
console.log(info.head);//SSTP/1.4 200 OK
console.log(info.Option);//notranslate

base_sstp_info_t

fmo_info_t: typeof fmo_info_t

fmo报文类

let fmo = jsstp.get_fmo_infos();
let kikka_uuid = fmo.get_uuid_by("name", "橘花");
if(kikka_uuid)
console.log(fmo[kikka_uuid].ghostpath);
ghost_events_queryer_t: typeof ghost_events_queryer_t

ghost事件查询器

let ghost_events_queryer = jsstp.new_event_queryer();
if(!ghost_events_queryer.available)
console.log("当前ghost不支持事件查询");
if(ghost_events_queryer.has_event("OnBoom"))
jsstp.OnBoom();
list_info_t: typeof list_info_t

list报文对象

let list = jsstp.GetNames();
for(let name of list)
console.log(name);

list_info_t

sstp_info_t: typeof sstp_info_t

sstp报文类

let info = new jsstp.sstp_info_t("SSTP/1.4 200 OK\r\nCharset: UTF-8\r\nSender: SSTPクライアント\r\nScript: \\h\\s0テストー。\\u\\s[10]テストやな。\r\nOption: notranslate\r\n\r\n");
console.log(info.head);//SSTP/1.4 200 OK
console.log(info.Option);//notranslate

sstp_info_t

type: typeof jsstp_t

jsstp对象

let my_jsstp=new jsstp.type("my_coooool_jsstp",sstp_server_url);

调用器生成函数

  • 获取指定key的调用器

    类型参数

    • T = sstp_info_t
    • Rest extends any[] = [Object]
    • Res = Object

    参数

    • key_name: String

      键名

    • value_name: String

      键值

    • 可选method_caller: method_caller<T, [Res]>

      方法调用器

    • 可选args_processor: ((...args: Rest) => Res)

      参数处理器

        • (...args): Res
        • 参数

          • 动态参数...args: Rest

          返回 Res

    返回 base_keyed_method_caller<T, Rest>

    调用器

  • 获取指定方法的调用器

    类型参数

    • T = sstp_info_t
    • Rest extends any[] = [Object]
    • Res = Object

    参数

    • method_name: String

      方法名称

    • 可选result_type: (new (str: string) => T)

      返回结果的类型,默认为sstp_info_t

        • new (str): T
        • 参数

          • str: string

          返回 T

    • 可选args_processor: ((...args: Rest) => Res)

      参数处理器,默认直接返回输入参数

        • (...args): Res
        • 参数

          • 动态参数...args: Rest

          返回 Res

    返回 method_caller<T, Rest>

    调用器

  • 用于获取指定key的简单调用器

    类型参数

    参数

    • key_name: String

      键名

    • value_name: String

      键值

    • 可选method_caller: method_caller<T, [Object]>

      方法调用器

    返回 simple_keyed_method_caller<T>

    调用器