0.0.1 • Published 1 year ago

@moonphy/websocket v0.0.1

Weekly downloads
-
License
ISC
Repository
-
Last release
1 year ago

WebSocket 库

安装

npm i @moonphy/websocket

使用方法(推荐使用 composition API 方式解耦)

import InWebsocket from '@moonphy/websocket'
const ws = new InWebsocket() < IWSResData > ('ws://10.135.8.33:8001', {})
ws.sendJson({ messageType: 'ccc', data: { a: 1, b: 2 } })
ws.messageTypeJson('ccc', (data) => {
  console.warn(data)
})

composition API

名字参数返回值说明
createWebsocket(url:string,opts?:InWebsocketOpts)InWebsocket 实例创建一个 websocket 支持异步创建
createWebsocketByMutil(name:string,url:string,opts?:InWebsocketOpts)InWebsocket 实例创建一个 有名字的 websocket 支持异步创建
messagecallback(event)void接受所有的消息
messageByMutil(name:string,callback(event))void具有名字的接受所有的消息
send(msg:string)void发送任意数据
sendByMutil(name:string, msg:string)void具有名字的发送任意数据
close(name?:string)void手动关闭连接
sendJson(msg: T, notResend?: boolean)void发送 JSON 类型数据
sendJsonByMutil(name: string, msg: T, notResend?: boolean)void具有名字的发送 JSON 类型数据
messageTypeJson(type:String,callback(jsonData,event))void返回指定类型的消息
messageTypeJsonByMutil(name:string,type:String,callback(jsonData,event))void具有名字返回指定类型的消息
getSocket(name?:string)InWebsocket 实例
closeAllvoidvoid关闭所有的 socket
offMessageTypeJson(type:String,callback?(jsonData,event))void关闭指定类型的接收消息, callback 不传递关闭该类型所有的监听
offMessageTypeJsonByMutil(name:string,type:String,callback?(jsonData,event))void关闭指定类型的接收消息, callback 不传递关闭该类型所有的监听
offMessage(callback?(jsonData,event))void关闭全局消息监听, callback 不传递关闭全局所有的监听
offMessageByMutil(name:string,callback?(jsonData,event))void关闭全局消息监听, callback 不传递关闭全局所有的监听
// 使用示例

import { createWebsocket, sendJson, messageTypeJson, message, offMessage, offMessageTypeJson } from '@moonphy/websocket'
setTimeout(() => {
  createWebsocket('ws://10.135.8.33:8001') // 支持异步连接
}, 1000)

sendJson({ messageType: 'ccc', data: { a: 1, b: 2 } })
sendJson({ messageType: 'dddds', data: { a: 11, b: 211 } })

message((event) => {
  console.warn('所有响应的数据')
  console.warn(event)
})
messageTypeJson('ccc', (data) => {
  console.warn('第一次监测')
  console.warn(data)
})
messageTypeJson('ddd', (data) => {
  console.warn('第一次监测dd')
  console.warn(data)
})
function secTest(data: any) {
  console.warn('第二次监测')
  console.warn(data)
}
messageTypeJson('ccc', secTest)

setTimeout(() => {
  offMessageTypeJson('ccc')
  offMessage()
}, 5000)

多 socket 示例

import { createWebsocketByMutil, sendJsonByMutil, messageByMutil, messageTypeJsonByMutil } from '../src/index'
const name = 'socket1'
setTimeout(() => {
  createWebsocketByMutil(name, 'ws://10.135.8.33:8001')
}, 1000)

setInterval(() => {
  sendJsonByMutil(name, { messageType: 'mutil', data: { a: 1, b: 2, time: Date.now() } })
}, 1000)

messageByMutil(name, (event) => {
  console.warn('所有mutil响应的数据')
  console.warn(event)
})
messageTypeJsonByMutil(name, 'ccc', (data) => {
  console.warn('第一次mutil监测')
  console.warn(data)
})

messageTypeJsonByMutil(name, 'ccc', (data) => {
  console.warn('第二次mutil监测')
  console.warn(data)
})

new InWebsocket(url,opts)

url: 长连接的 url 必须

opts: 非必填

名字类型默认值说明
pingHeartBeatTimeoutNumber10000发送心跳间隔时间
pongHeartBeatTimeoutNumber30000心跳响应超时时间
pingMsgStringJSON.stringify({ messageType: 'HEARTBEAT' })发送心跳的内容
pongMsgStringJSON.stringify({ messageType: 'HEARTBEAT' })响应心跳的内容,用于过滤 message , isCheckPongMsg 为 true 的时候有效
checkHeartBeatBooleantrue是否发送心跳包
reconnectMaxCountNumber5连接断开的时候,重试连接次数
messageTypeStringmessageType用于 JSON 数据响应的时候判断消息 Type 的值
isOnlineReConnectStringtrue网络恢复的时候是否重连
isCheckPongMsgStringtrue是否检测响应的消息
isCloseReconnectStringfalse关闭了连接是否自动重连

ws 对象方法/属性

名字参数返回值说明
sendmsg:Stringvoid发送字符串消息
messagecallback(event)void接受所有的消息
closevoidvoid手动关闭连接
sendJsondata:JSONvoid发送 JSON 类型数据
messageTypeJson(type:String,callback(jsonData,event))void返回指定类型的消息
ws原生的 ws 对象
offMessageTypeJson(type:String,callback?(jsonData,event))void关闭消息推送
offAllMessagevoidvoid关闭所有消息
0.0.1

1 year ago