npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

wpsjs-rpc-sdk

v1.1.31

Published

JavaScript library for WPS Add-ins

Downloads

55

Readme

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协议请求,避免高版本浏览器对本地云服务请求的安全拦截