0.0.32 • Published 1 year ago

light-websocket-client v0.0.32

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

light-websocket-sdk-ts

轻量封装 Websocket 客户端 ts 版

简介

一个基于 Websocket 进行简单封装的轻量协议客户端,需配合 light-websocket-server 使用

1. 连接保活

由于 websocket 的 js API 无法发送 websocket 的 ping 帧,导致只能在应用层协议再实现一遍保活机制,所以在 Websocket 数据帧首部分出一个字节作为协议头,实现了相对 websocket 协议更上层,但是相对应用层更下层的保活机制

2. 自动重连

  • 自动重连默认开启,可以通过 Options 来进一步控制
  • 客户端主动调用 disconnect() 关闭连接会禁用自动重连,直到重新调用 connect()
  • 自动重连采用退避超时策略,可以通过 Options 来进一步控制
  • 收到来自服务端彻底关闭的 close status 也会禁用重连

快速开始

浏览器

  • 安装依赖
$ npm install light-websocket-client --saved
  • 创建连接
import {LightWebsocketClientImpl} from 'light-websocket-client';

const options = new Options();
// 连接空闲超时
options.idleTimeout = 50000;

// log 实现
options.log = (message, param) => {
    console.log(message, param);
};

// 创建客户端 (url,appKey,ticket,options?)
const client = new LightWebsocketNodeClient('ws://localhost:8888/endpoint', 'a3a45sfbc7e', 'xxx', options);

// 连接激活监听 (连接建立并且认证通过)
client.onActive(() => {
    client.subscribe(['/topic/a']).then(ar => {
        console.log('subscribe succeed');
    }).catch(e => {
        console.error('subscribe error', e);
        client.disconnect();
    });
});

// 连接失效监听 (连接断开并认证失效)
client.onInactive(() => {
    console.log('onInactive');
});

// 消息监听
client.onMessage((message) => {
    console.log('onMessage: ', message);
});

// 建立连接
client.connect();

Node.js

  • 安装依赖
$ npm install light-websocket-client --saved
$ npm install ws --saved
  • 创建 Node.js ws 实现
import {LightWebsocketClientImpl} from 'light-websocket-client';
import * as Websocket from 'ws';

export class LightWebsocketClientNodeImpl extends LightWebsocketClientImpl {

    createWebsocket(url: string, protocols?: string[] | undefined): any {
        return new Websocket(url, protocols, {});
    }
}
  • 创建客户端建立连接
const options = new Options();
// 连接空闲超时
options.idleTimeout = 50000;

// log 实现
options.log = (message, param) => {
    console.log(message, param);
};

// 创建客户端 (url,appKey,ticket,options?)
const client = new LightWebsocketNodeClient('ws://localhost:8888/endpoint', 'a3a45sfbc7e', 'xxx', options);

// 连接激活监听 (连接建立并且认证通过)
client.onActive(() => {
    client.subscribe(['/topic/a']).then(ar => {
        console.log('subscribe succeed');
    }).catch(e => {
        console.error('subscribe error', e);
        client.disconnect();
    });
});

// 连接失效监听 (连接断开并认证失效)
client.onInactive(() => {
    console.log('onInactive');
});

// 消息监听
client.onMessage((message) => {
    console.log('onMessage: ', message);
});

// 建立连接
client.connect();
0.0.32

1 year ago

0.0.31

1 year ago

0.0.30

1 year ago

0.0.29

1 year ago

0.0.28

1 year ago

0.0.27

1 year ago

0.0.26

1 year ago

0.0.25

1 year ago

0.0.24

1 year ago

0.0.23

1 year ago