wpsjs-rpc-sdk

1.1.31 • Public • Published

wpsjsrpcsdk.js

用于wpsjs加载项,web端前端页面的编写

目前支持:

  • 单进程模式:用户窗口下仅启动一个wps客户端,所有操作都会反映到该wps客户端下
  • 多进程模式:用户窗口下可以启动多个wps客户端,通过使用WpsClient对象调用接口,可以将操作发送到对应的wps客户端上,不同wps客户端互不影响
  • 多用户模式(目前仅windows):多个用户同时登陆一个服务器时,每个用户窗口下可以独立地通过web端操作wps客户端,不同用户的操作互不影响;支持单进程模式和多进程模式

接口使用

管理wps加载项:

WpsAddonMgr.getAllConfig

获取publish.xml的内容

@param {*} callBack 回调函数

WpsAddonMgr.verifyStatus

检查ribbon.xml文件是否有效

@param {*} element 参数对象

@param {*} callBack 回调函数

WpsAddonMgr.enable

启用加载项

@param {*} element 参数对象

@param {*} callBack 回调函数

WpsAddonMgr.disable

禁用加载项

@param {*} element 参数对象

@param {*} callBack 回调函数

单进程模式:

WpsInvoke.InvokeAsHttp

以http协议启动wps

@param {*} clientType 加载项类型, wps / wpp / et

@param {*} name 加载项名称

@param {*} func 客户端加载项要执行的方法

@param {*} param 客户端加载项执行方法的参数

@param {*} callback 回调函数

@param {*} showToFront 设置客户端是否显示到前面

@param {*} jsPluginsXml 设置加载项路径

@param {*} silentMode 是否是静默启动

WpsInvoke.InvokeAsHttps

以https协议启动wps

@param {*} clientType 加载项类型, wps / wpp / et

@param {*} name 加载项名称

@param {*} func 客户端加载项要执行的方法

@param {*} param 客户端加载项执行方法的参数

@param {*} callback 回调函数

@param {*} showToFront 设置客户端是否显示到前面

@param {*} jsPluginsXml 设置加载项路径

@param {*} silentMode 是否是静默启动

WpsInvoke.RegWebNotify

注册一个前端页面接收WPS传来消息的方法

@param {*} clientType wps | et | wpp

@param {*} name WPS加载项的名称

@param {*} callback 回调函数

WpsInvoke.CreateXHR

创建一个xhr对象

WpsInvoke.IsClientRunning

当前客户端是否在运行,使用WpsInvoke.IsClientRunning()进行调用

@param {string} clientType 加载项类型

@param {function} [callback] 回调函数,返回值如下:

"Client is running." 客户端正在运行

"Client is not running." 客户端没有运行

WpsInvoke.ClientType

加载项类型

wps / et / wpp

多进程模式:

var wpsClient = new WpsClient(WpsInvoke.ClientType.wps)

@constructor WpsClient wps客户端

@param {string} clientType 必传参数,加载项类型,有效值为"wps","wpp","et";分别表示文字,演示,电子表格

wpsClient.InvokeAsHttp

以http启动

@param {string} name 加载项名称

@param {string} func 要调用的加载项中的函数行

@param {string} param 在加载项中执行函数func要传递的数据

@param {function({int, string})} callback 回调函数,status == 0 表示成功,失败请查看message信息

@param {bool} showToFront 设置wps是否显示到前面来

@return {string} 返回值:

"Failed to send message to WPS." 发送消息失败;

"WPS Addon is not response." 加载项阻塞,函数执行失败

wpsClient.InvokeAsHttps

以https启动

@param {string} name 加载项名称

@param {string} func 要调用的加载项中的函数行

@param {string} param 在加载项中执行函数func要传递的数据

@param {function({int, string})} callback 回调函数,status == 0 表示成功,失败请查看message信息

@param {bool} showToFront 设置wps是否显示到前面来

wpsClient.onMessage

消息注册函数的回调函数

wpsClient.StartWpsInSilentMode

以静默模式启动客户端

@param {string} name 必传参数,加载项名称

@param {function({int, string})} [callback] 回调函数,status == 0 表示成功,失败请查看message信息

wpsClient.ShowToFront

显示客户端到最前面

@param {string} name 必传参数,加载项名称

@param {function({int, string})} [callback] 回调函数

wpsClient.CloseSilentClient

关闭未显示出来的静默启动客户端

@param {string} name 必传参数,加载项名称

@param {function({int, string})} [callback] 回调函数

wpsClient.IsClientRunning

当前客户端是否在运行,使用WpsClient.IsClientRunning()进行调用

@param {function({int, string})} [callback] 回调函数,返回值如下:

"Client is running." 客户端正在运行

"Client is not running." 客户端没有运行

wpsClient.jsPluginsXml

设置加载项路径

多用户模式:

EnableMultiUser()

启用多用户模式

接口实现

startWps

web端给加载项本地服务发请求的接口

如果是非同步请求,先判断上一次请求是否完成

绝大多数请求都建议采用同步请求,防止阻塞造成卡死

请求发送后,成功得到响应时根据本地服务返回的内容,生成返回值返回给前端;status == 0 表示该次请求执行成功,status != 0 表示该次请求执行失败,通过访问message获得失败信息

WpsStart

启动wps客户端,加载项执行操作,无返回值

WpsStartWrap

加载项本地服务版本为空时,通过该接口启动wps

WpsStartWrapExInner

启动wps客户端,加载项执行操作,有返回值,支持浏览器触发

WpsStartWrapVersionInner

获取加载项本地服务的版本号

1.0.0原始版本

1.0.1版本支持多进程

1.0.2版本支持多用户(目前仅windows)

RegWebNotify

向加载项本地服务发送接收客户端消息的注册请求

分为单进程和多进程:

单进程的请求不含有clientId,客户端发的消息,所有注册的请求都能收到

多进程的请求含有clientId,客户端发的消息,只有当前客户端对应的WpsClient对象能收到 f 同时,onload里有做一个容错处理:

如果客户端发的消息是字符串化后的json对象,sdk可以解析成功,并将该对象返回给html,html根据需要获得自己想要的json数据

如果客户端发的消息不是标准的json格式数据导致json解析失败,sdk也会将用户数据提取出来返回给html

这里还有一个心跳包的机制,默认是开启的,只有当浏览器版本过低不支持worker时才会关闭。开发者可以通过手动注释掉

HeartBeatWorker = new Worker(codeToBlob(HeartBeatCode));

这一段代码来关闭心跳包。这里增加心跳包是为了让客户端发的消息不丢失,都能到达web端。

GetUrlBase

加载项本地服务监听的端口,http为58890,https为58891

默认使用http协议

如果要修改监听端口,需要同步修改oem.ini配置

wpsclient.InvokeAsHttp

以http启动多进程模式客户端

回调函数里如果执行失败,会调用传进来的回调函数,然后return

如果使用不支持多进程的wps客户端调用该接口,回调函数里会调用传进来的回调函数,并发送接收消息的注册请求,然后return

wpsclient.InvokeAsHttps

以https启动多进程模式客户端

wpsclient.RegWebNotify

多进程模式用来调用发送接收消息注册请求的接口 外部无需调用,InvokeAsHttp的回调函数里调用了

wpsclient.OnRegWebNotify

多进程模式用来调用消息注册函数的回调函数

wpsclient.StartWpsInSilentMode

以静默启动模式启动一个wps客户端,逻辑与InvokeAsHttp相同,只是增加了一个silentMode = true的标记

wpsclient.ShowToFront

将wps客户端显示到最前面

wpsclient.CloseSilentClient

关闭没有显现出来的静默启动客户端

wpsclient.IsClientRunning

判断客户端是否正在运行

版本改动

version 1.0.1

  • 支持加载项管理

version 1.0.2

  • 重命名为wpsjsrpcsdk.js

version 1.0.3

  • 修改入口文件

version 1.0.4

  • 引入注册监听报错
  • 获取插件信息失败重试修改为3次

version 1.0.5

  • xhr对象创建修改

version 1.0.6

  • 添加wps置顶参数,showtofront

version 1.0.7

  • 支持多进程
  • 实现自动发送注册请求
  • 增加静默启动
  • 增加判断客户端是否在运行
  • 区别服务器版本

version 1.0.8

  • 不支持多进程的wps客户端提示升级客户端

version 1.0.9

  • 增加注册超时
  • 支持多个加载项同时注册消息

version 1.0.10

  • 处理sdk在ie11下的注册问题

version 1.0.11

  • 统一url的调用入口

version 1.0.12

  • 处理一个url调用错误

version 1.0.13

  • 支持消息队列
  • 增加心跳包,防止消息被清

version 1.0.14

  • 心跳包的创建兼容ie10

version 1.0.15

  • 保证非原生加载也能执行InitSdk
  • 版本号获取之后,增加自定义协议的启动逻辑

version 1.0.16

  • 支持多用户,兼容老版本
  • 注册请求添加json解析失败的容错机制
  • 接口添加注释
  • 多进程接口兼容单进程客户端,保证接口可用,但实际上启动的是单进程客户端

version 1.0.17

  • 增加多用户模式的开关,默认关闭多用户模式;想要支持多用户模式,html页面调用一次EnableMultiUser();即可

version 1.0.18

  • 关闭多用户模式时,自定义协议去掉参数serverId,兼容linux

version 1.0.19

  • 对安全提示弹框的优化,用户点击取消,不再发送注册请求;多进程下不再启动客户端,直接返回

version 1.0.20

  • 多进程接口兼容单进程客户端

version 1.0.21

  • 给自定义协议加个标记,同一时间保证只执行一次自定义协议

version 1.0.22

  • 单进程模式增加静默启动参数
  • 默认采用http协议
  • 多进程模式全部改为同步请求,通过前端页面来控制避免启动同时启动多个客户端
  • 多进程模式支持通过标记single转为单进程模式
  • 加载项发送json数据时,直接将json对象返回给前端,前端自行取用json对象里的数据
  • 重新处理一下json格式错误时的容错代码
  • 增加根据状态码和错误信息返回对应的json数据
  • 统一sdk返回的数据格式;加载项执行成功返回{status : 0, response : responseStr};加载项执行失败返回{status : 1/2/3/4, message : errorMsg};

version 1.0.23

  • 注册消息的请求直接发,不要有延时了

version 1.0.24

  • publish模式不用多用户时,不要带有serverId
  • 开放加载项管理disableAll接口

version 1.0.25

  • 重新整理初始化sdk获取服务版本号的流程

version 1.0.26

  • 注册消息的请求根据状态码直接返回
  • 将msgid的判断改成undefined,处理msgid==0时直接把消息返回给html的情况

version 1.0.27

  • 去掉多余的错误判断,仅在有msgId的情况下才去手动解析json数据里data的值

version 1.0.28

  • 开放加载项管理接口disableall,用于卸载所有加载项
  • 加载项管理相关请求去掉超时
  • 加载项管理相关请求增加时间戳,避免重复请求直接返回406报错
  • 单进程客户端不处理WPSInnerMessage_quit消息,继续发送注册请求
  • 多用户下子进程退出会返回消息"Subserver not available.",此时执行操作会调用自定义协议启动加载项本地服务
  • 用户发送json数据,统一返回给前端json字符串,不再返回json对象

version 1.0.29

  • 处理serverVersion被覆盖的问题,当返回值为Subserver not available.时,不去修改serverVersion的值,减少自定义协议的弹框

version 1.0.30

  • 处理asknotify收到的消息为空的场景,将判断改为data不为未定义,原判断在data未空时不会直接返回data
  • 处理多进程runparams返回值为空的场景,此时会导致json解析出错;手动解析出clientId和data的值,并将data的值返回

version 1.0.31

  • 多用户下加载项的返回值统一为base64编码,sdk对收到的值进行解码
  • 通过服务版本号1.0.3区分是否需要进行解码;同时对之前的版本处理json解析出错的情况 - 如发空值,发字符串
  • 统一参数对象为wpsclient

version 1.1.31

  • 新增websocket通讯,在http多次请求失败下,采用websocket协议请求,避免高版本浏览器对本地云服务请求的安全拦截

Readme

Keywords

Package Sidebar

Install

npm i wpsjs-rpc-sdk

Weekly Downloads

67

Version

1.1.31

License

ISC

Unpacked Size

95.9 kB

Total Files

4

Last publish

Collaborators

  • aizelin