@vanwei-wcs/websocket
TypeScript icon, indicating that this package has built-in type declarations

0.1.1 • Public • Published

wcs-websocket

🚀 wcs websocket 🌈.

安装

npm i @vanwei-wcs/websocket

使用

import WCSWebsocket from ' @vanwei-wcs/websocket'

console.log(WCSWebsocket)

const websocketUrl = 'ws://example.com'
const options = []
const wsOptions = {
	maxReconnectionDelay: 5000,
	minReconnectionDelay: 2000,
	maxRetries: Infinity,
	enableHeartbeat: true,
	debug: false
}
// const loginParams = { token: 'asdasdasd' }
const loginParams = {
	name:'admin', key:'ewqweqwe'
}

const ws = new WCSWebsocket(websocketUrl, protocols, wsOptions)
console.log('Created new websocket',ws)

// 登录成功
ws.onLogin = () => {
	console.log('WCS Websocket Logined')
}
// 登录失败
ws.onLoginError = () => {
	console.log('WCS Websocket Login error')
}

// wcs 消息
ws.onWCSStringMessage = (data) => {
	// wcs api 返回数据,如果消息绑定了回调方法,则不会执行此方法
}
// wcs 音视频流
ws.onWCSStreamMessage = (buffer) => {
	// 音视频流, 可通过 @vanwei-wcs/stream npm库处理
}

// websocket 打开
ws.onopen = e => {
	const loginType = typeof loginParams.token !== 'undefined' ? 'token' : 'name'
	ws.login({ ...loginParams }, loginType) // 登录wcs websocket
}
// websocket 关闭
ws.onclose = e => {
	console.log(e)
}
// websocket 错误
ws.onerror = e => {
	console.log(e)
}
// websocket 重连
ws.onreconnect = e => {
	console.log(e)
}

组件api

属性 Attributes

参数 说明 类型
WCS_ID 当前通讯的msg_id的值,一般不需要,对象内部会自动处理,不能设置此值 number / string
isLogin wcs websocket是否已登录 boolean
其他还有标准Websocket的属性值,例如:binaryType、url、readyState等

protocols解释

标准Websocket 类的参数,默认为空数组 []

wsOptions

参数 说明 类型 可选值 默认值
enableHeartbeat 是否开启心跳 boolean - false
pingTimeout 心跳发送时间间隔(毫秒) number - 10000
pongTimeout 心跳接受时间间隔(毫秒) number - 10000
pingMsg 心跳消息 string - "\r\n"
outputPingMsg 心跳消息是否能被onWCSStringMessage方法输出 boolean - false
maxReconnectionDelay 最大重连时间间隔(毫秒) number - 10000
minReconnectionDelay 最小重连时间间隔(毫秒) number - 1000 + Math.random() * 4000
reconnectionDelayGrowFactor 重连时间增长率,基数为minReconnectionDelay,最大不超过maxReconnectionDelay number - 1.3
minUptime 暂时可以不设置 number - 5000
connectionTimeout 连接超时时间(毫秒) number - 4000
maxRetries 最大重连次数 number - Infinity
maxEnqueuedMessages 最大消息队列数量,重连后成功后会依次发送 number - Infinity
startClosed 是否new之后不自动连接 boolean - false
debug 开启debug模式 boolean - false

方法

方法 说明 参数
sendMessage 发送api请求,参数有message和ctx,详细解释参见下方sendMessage参数解释 message,ctx
login 登录wcs websocket,loginParams内容是{token:'aaaaaasdasd'}或者{name:'username',key:'3k4h5k2j3h52j34'},loginType值的是如果loginParams里面含有token则为token,否则是name loginParams,loginType

回调方法

方法 说明 参数
onLogin 登录成功回调
onLoginError 登录失败回调
onWCSMessage weosocket消息回调,未处理 string / buffer
onWCSStringMessage websocket api回复消息类回调 {}
onWCSStreamMessage websocket 流消息回调 buffer
其他还有标准Websocket的回调,例如:onopen、onclose、onerror、onmessage等

sendMessage参数解释

  • message api接口,msg_id可以设置为0,组件内部有自增数字去设置

  • ctx 执行上下文,具体值有params和cb, params是一个对象,可以放入任何值;cb是一个回调函数,当发送消息时,会添加一个message中msg_id对应ctx的map,当组件内部获取到服务端发来的消息时,如果msg_id的map存在,会执行cb方法(params作为参数),具体使用方法参照下方示例

const message = {namespace:"wcs/main",request:"xxxx"}
const ctx = { params:{ a:'aaa' }, cb:sendMessageCallback }
// const ctx = { params:{ a:'aaa' }, cb:sendMessageCallback.bind(this) } // 有this指向问题使用这种方式

sendMessage(message,ctx)

function sendMessageCallback(res,params){
  console.log(res) // api接口返回数据
  console.log(params) // { a:'aaa' }
}

文档还未编写完整,详细请咨询有关人员

Readme

Keywords

none

Package Sidebar

Install

npm i @vanwei-wcs/websocket

Weekly Downloads

1

Version

0.1.1

License

MIT

Unpacked Size

88.2 kB

Total Files

10

Last publish

Collaborators

  • yuan_zhenjia
  • ma_long
  • chenwuai