0.1.0 • Published 2 years ago

@falseluffy/one-socket v0.1.0

Weekly downloads
-
License
ISC
Repository
github
Last release
2 years ago

OneSocket

我们的口号是“像使用axios和fetch 一样使用websocket”

OneSocket 是一个是用来实现单socket通信websocket工具,实现了顺序队列请求,每个请求可以有50ms(可配置)的间隔时间,并自带心跳请求。支持Promise调用,只要做一些简单的配置,可以像使用axios那样简单的使用socket请求了

以前我们写http请求是这样的

const xhr = new XMLHttpRequest()
xhr.onreadystatechange = function(){
    if(xhr.readyState === 4) {
        if(xhr.status === 200){
            is ok
        } else {

        }
    }
}
xhr.open('get, url, true)
xhr.send(data)

写起来很烦,逻辑也很感人。。

后来有了axios 我们发送请求时只要这样

axios.get('path').then((res) => {
    console.log(res)
})

代码很少,工作很轻松,逻辑清晰,维护很简单

以前我们写socket

const socket = new WebSocket(src)

socket.addEventListener('open', function() {
    socket.send(JSON.stringy({
        service: 'connect',
        data: '连上了'
    }))
})
socket.addEventListener('close',function(){
    
})

socket.addEventListener('message', function(res) {
    const data = JSON.parse(res.data)

    if (data.result_data.service === 'connect') {
        console.log('连上了')
    } else if (data.result_data.service === 'state') {

    }
})

写完这些我想打人,为什么要我承担这些。。

现在我们有了OneSocket

try{
    const socket = await new OneSocket({
        url: 'ws://192.168.69.60:8082/ws/home/overview'
    })
} catch((err) => {
    console.log(err)
})

socket.send('login', data).then((res) =>{
    console.log(res)
})

socket.send('getList', data).then(() => {
    
})
socket.send('getUser', data).then(() => {

})

socket.on('notice', function() {

})

or

new OneSocket({
    url: 'ws://192.168.69.60:8082/ws/home/overview'
}).then((ws) => {
    ws.send('login', data).then(() => {

    })
    ws.send('getList', data).then(() => {
        
    })
    ws.send('getUser', data).then(() => {
        
    })

    ws.on('notice', function() {

    })
})

这样我们就能有个非常清晰的业务逻辑,不论开发和维护过程中都将非常简单

配置项

字段名类型默认值描述
urlstringrequiredsocket请求地址
timeoutnumber默认10000socket请求时间
intervalnumber默认50ms每个请求的延迟时间
modestring
可选参数 vague模糊模式,使用service名定位回调,较为模糊,每个service可能对应多个回调
可选参数exact根据uuid定位回调,定位准确,每个uuid对应唯一回调
hasHeartbeatboolean是否存在心跳请求,默认true
heartbeatIntervalnumber10000心跳请求的间隔时间
heartbeatPackObjectJSONString 心跳请求数据
responseParserfunctionrequiredsocket请求返回数据解析函数

API

方法名功能参数
send发送数据无参数
close关闭请求无参数
updateConfig更新配置项Object: {heartbeatPack:{}}
on监听后端主动推送的消息参数:name,callback
remove移除用户监听的消息的一个回调,参数:name,callback
destroy销毁指定名称的所有监控回调,参数; name

TODO

Interceptors

  • request
  • response

Cancellation

0.1.0

2 years ago

0.0.9

2 years ago

0.0.8

2 years ago

0.0.7

2 years ago

0.0.6

3 years ago

0.0.5

3 years ago

0.0.1

4 years ago