0.1.1 • Published 3 years ago

@vanwei-wcs/websocket v0.1.1

Weekly downloads
-
License
MIT
Repository
-
Last release
3 years ago

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
isLoginwcs 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,最大不超过maxReconnectionDelaynumber-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,否则是nameloginParams,loginType

回调方法

方法说明参数
onLogin登录成功回调
onLoginError登录失败回调
onWCSMessageweosocket消息回调,未处理string / buffer
onWCSStringMessagewebsocket api回复消息类回调{}
onWCSStreamMessagewebsocket 流消息回调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' }
}

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