🚀 Socket Launch Week Day 5:Introducing Repository Access Permissions and Custom Roles.Learn more
Sign In

if-ws-queue

Package Overview
Dependencies
Maintainers
1
Versions
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

if-ws-queue

多Worker线程,多Socket链接,多事件通道方案

latest
npmnpm
Version
1.0.1
Version published
Maintainers
1
Created
Source

Worker

字段
id非必需,可缺省。注册多Worker时必须指定ID
url必需,加载worker的地址

Websocket

id可缺省,注册多个WS服务时,必须指定ID
url必需,WS链接地址
protocolheader携带的sec-websocket-protocol参数,用于携带额外的参数。但目前推荐使用GET方式在url中添加参数

Event

id可缺省, 当缺失该参数时,将会注册为默认事件
loop布尔值, 事件是否进行轮询
timeout事件触发间隔,当loop为true的时候,该参数才有意义
data自定义的传参,注意,在实际传参时,将会自动追加事件的id,您可以flag参数映射该键值

实现

Woker队列管理 WSQueue

one(workerOption, socketURL, protocol, socket_id)创建一个Worker线程,或创建一个Socket链接, 返回IfWorkerSocket对象
close(workerId)关闭一个Worker线程
get(workerId)查询并返回一个IfWorkerSocket对象

IfWorkerSocket对象

socket(socketURL, protocol, socket_id)创建一个IfSocket对象实例,并尝试创建socket链接
getSocket(socket_id)查询并返回一个IfSocket对象
close(socket_id)关闭一个socket链接

IfSocket对象

send(data)通过socket发送消息
close()关闭当前socket链接
reconnect()尝试重新创建socket链接
connect(socketURL, protocol)创建一个新的socket链接,替换当前的socket链接
register(eventOption, callback, validFn)创建一个定时发送任务
on(eventId, callback, validFn)监听定时任务的数据
off(eventId)销毁定时任务
update(data, eventId)更新定时任务的载荷数据

实战

第一步 创建WSQueue

var WSQ = new WSQueue()

第二步 创建Worker线程

var myWorker = WSQ.one(``'//awesome.obs.cn-east-3.myhuaweicloud.com/ws-queue-worker.js'``)

第三步 创建Socket链接

var mySocket.socket(``"ws://localhost:3000/basic"``, [``'ifyou'``])

第四步 数据定时交互

注册事件推荐设定一个id(否则将会使用默认id),这对监听事件的回掉数据非常关键。validFn会尝试匹配服务器返回的数据是否符合当前约定,默认期望是返回的eventId与当前事件id匹配。

当设定loop为true的时候,就获得了定时特性,你可以通过调节timeout来调节定时的频次。 当loop为false的时候,timeout的设定将没有意义。

在轮询时,你可以通过mySocket.update(data, eventId)来更新定时任务的载荷数据data。

var eventOption = {
  data: {foo: 'demo数据'},
  loop: true,
  timeout: 1500,
  id: 'event-id'
};
mySocket.register(eventOption);
 
function validFn(eventId, response){
    return response.eventId === eventId
}  
 
mySocket.on('event-id', function(data){
  console.log(data)
}, validFn)

第五步 数据单向发送和接收

单向数据发送并不产生上述的eventId,对于数据接收时,你需要使用on(callback, validFn)来创建一个接收器。

mySocket.send({msg: 'Hi World'});
mySocket.on(function(data){
    console.log(data)
}, function(id, response){
   return response.flag === 'HI_World_Flag'
})

Vue 使用

import IfWSQueue from 'if-ws-queue'
app.use(IfWsQueue)

<!-- setup -->
const $wsq = useWSQ()
// ....

Keywords

Vue

FAQs

Package last updated on 17 Jan 2023

Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts