Skip to content

Commit 8304425

Browse files
committed
🔖 v0.0.1-1
2 parents 51ae077 + 3a1be78 commit 8304425

12 files changed

+896
-511
lines changed

.npmrc

-1
This file was deleted.

README.md

+68-85
Original file line numberDiff line numberDiff line change
@@ -1,110 +1,93 @@
11
# 介绍
22

3-
`ClientWs` 是一个灵活且功能丰富的 `WebSocket` 客户端类,用于与 `WebSocket` 服务器进行通信。它支持自动重连、消息缓存和事件监听等功能
3+
`@coderlzw/ws` 是一个灵活且功能丰富的 `WebSocket` 客户端(`node``browser`)类,用于与 `WebSocket` 服务器进行通信。它支持自动重连、消息缓存和事件监听等功能
44

55
# 安装
66

77
```shell
8-
npm add @coderlzw/client-ws
8+
npm add @coderlzw/ws
99
// or
10-
yarn add @coderlzw/client-ws
10+
yarn add @coderlzw/ws
1111
// or
12-
pnpm add @coderlzw/client-ws
12+
pnpm add @coderlzw/ws
1313
```
1414

15-
# 使用
16-
17-
```ts
18-
import ClientWs from '@coderlzw/client-ws';
19-
20-
const wsClient = new ClientWs({
21-
url: 'wss://example.com/socket', // WebSocket 服务器地址
22-
timeout: 5000, // 可选,连接超时时间(毫秒)
23-
reconnect: true, //可选,是否自动重连,默认为 true
24-
reconnectInterval: 5000, //可选, 重连间隔(毫秒),默认为 5000
25-
reconnectMaxInterval: 10000, // 可选,最大重连间隔(毫秒),默认为 10000
26-
reconnectMaxTimes: 10, // 可选,最大重连次数,默认为 10
27-
uniqueKey: 'message_id', // 消息唯一标识符,。默认值为 message_id
28-
cacheMessage: true, // 是否缓存未发送的消息,默认值为 false
29-
maxCacheMessage: 100 // 缓存消息的最大数量,默认值为 100
30-
});
31-
32-
// 连接到 WebSocket 服务器
33-
wsClient.connect();
34-
35-
// 监听事件
36-
wsClient.on('open', (event) => {
37-
console.log('WebSocket 连接已打开', event);
38-
});
15+
# WebSocketClient
16+
17+
## 特性
18+
19+
- 支持自动重连
20+
- 消息缓存机制
21+
- 支持发送和接收二进制数据
22+
- 事件监听机制
23+
24+
## 用法
25+
26+
```javascript
27+
import { WebSocketClient } from "@coderlzw/ws";
28+
29+
const ws = new WebSocketClient("ws://127.0.0.1:8080");
30+
// 需要调用 connect 才会建立连接
31+
ws.connect();
32+
ws.on("open", (event) => {
33+
// ...
34+
})
35+
.on("close", (closeEvent) => {
36+
// ...
37+
})
38+
.on("error", (event) => {
39+
// ...
40+
})
41+
.on("message", (messageEvent) => {
42+
// ...
43+
});
44+
```
3945

40-
wsClient.on('message', (event) => {
41-
console.log('收到消息:', event.data);
42-
});
46+
### 发送消息
4347

44-
wsClient.on('close', (event) => {
45-
console.log('WebSocket 连接已关闭', event);
46-
});
48+
```ts
49+
/// 无回调函数
50+
ws.sendMessage("hello");
4751

48-
wsClient.on('error', (event) => {
49-
console.error('WebSocket 错误:', event);
52+
// 有回调函数
53+
ws.sendMessage<{ name: string }>({ name: "张三" }, (error, data) => {
54+
// error: null
55+
// data: { name: "张三", message_id: "xxxxx" }
5056
});
5157

52-
// 发送消息
53-
wsClient.sendMessage({ text: 'Hello, World!' }, (error, response) => {
54-
if (error) {
55-
console.error('消息发送失败:', error);
56-
} else {
57-
console.log('消息发送成功:', response);
58-
}
58+
// 异步
59+
ws.sendMessageAsync<{ name: string }>({ name: "张三" }).then((data) => {
60+
// data: { name: "张三", message_id: "xxxxx"}
5961
});
62+
```
6063

61-
// 使用异步发送消息
62-
wsClient.sendMessageAsync({ text: 'Hello, Async!' })
63-
.then(response => {
64-
console.log('异步消息发送成功:', response);
65-
})
66-
.catch(error => {
67-
console.error('异步消息发送失败:', error);
68-
});
69-
70-
// 关闭连接
71-
wsClient.close();
64+
# WebSocketServer
7265

73-
// 销毁客户端
74-
wsClient.destroy();
66+
```ts
67+
import { WebSocketServer } from "@coderlzw/ws";
68+
69+
const ws = new WebSocketServer("ws://localhost:8080");
70+
71+
ws.connect();
72+
73+
ws.on("open", (instance) => {
74+
console.log("open", instance);
75+
})
76+
.on("error", (instance, err) => {
77+
console.log("error", err);
78+
})
79+
.on("close", (instance, code, reason) => {
80+
console.log("close", event);
81+
})
82+
.on("message", (instance, data, isBinary) => {
83+
console.log("message", data, isBinary);
84+
});
7585
```
7686

77-
# 方法
78-
79-
- `connect()`: 连接到 WebSocket 服务器。
80-
- `sendMessage<R = any, S = any>(data: S, callback?: MessageCallback<R>)`: 发送消息。如果 `WebSocket` 未连接且
81-
`cacheMessage`
82-
选项为 true,则消息会被缓存。`data` 可以是字符串或对象。
83-
- `sendMessageAsync<R = any, S = any>(data: S): Promise<R>`: 发送消息并返回一个 Promise。
84-
- `close()`: 关闭 WebSocket 连接。
85-
- `destroy()`: 销毁 WebSocket 客户端,移除所有监听器并关闭连接。
86-
- `on(event: string, listener: SocketEventListener)`: 添加事件监听器。支持的事件包括 `open``close``message``error`
87-
- `once(event: string, listener: SocketEventListener)`: 添加一个一次性事件监听器。
88-
- `removeListener(event: string)`: 移除指定事件的所有监听器。
89-
- `removeAllListeners()`: 移除所有事件监听器。
90-
91-
# 配置选项(Options)
92-
93-
- `url: string`:WebSocket 服务器地址。必需。
94-
- `timeout?: number`:连接超时时间(毫秒),默认 `5000`
95-
- `reconnect?: boolean`:是否自动重连,默认 `true`
96-
- `reconnectInterval?: number`:重连间隔(毫秒),默认 `5000`
97-
- `reconnectMaxInterval?: number`:最大重连间隔(毫秒),默认 `10000`
98-
- `reconnectMaxTimes?: number`:最大重连次数,默认为 0 不限制。
99-
- `uniqueKey?: string`:每条消息携带的唯一标识符,默认为 `message_id`
100-
- `cacheMessage?: boolean`:是否缓存发送失败的消息,默认为 `false`
101-
- `maxCacheMessage?: number`:缓存消息的最大数量,默认为 `100`
102-
10387
# 贡献
10488

105-
如果你希望为这个项目做出贡献,请在 GitHub 上提交 [Issues](https://github.com/coderlzw-cn/client-ws/issues)
106-
[Pull Requests](https://github.com/coderlzw-cn/client-ws/pulls)
89+
如果你希望为这个项目做出贡献,请在 GitHub 上提交 [Issues](https://github.com/coderlzw-cn/client-ws/issues)[Pull Requests](https://github.com/coderlzw-cn/client-ws/pulls)
10790

10891
# 许可证
10992

110-
该项目使用 MIT 许可证 - 详情请参阅 [LICENSE](https://github.com/coderlzw-cn/client-ws/blob/main/LICENSE) 文件。
93+
该项目使用 MIT 许可证 - 详情请参阅 [LICENSE](https://github.com/coderlzw-cn/client-ws/blob/main/LICENSE) 文件。

eslint.config.mjs

+3-8
Original file line numberDiff line numberDiff line change
@@ -12,19 +12,14 @@ export default [
1212
...tseslint.configs.recommended,
1313
{
1414
rules: {
15-
// 警告未使用的变量,但忽略以 "_" 开头的变量
16-
"no-unused-vars": ["warn", {"varsIgnorePattern": "^_", "argsIgnorePattern": "^_"}],
17-
// 如果有超过 1 行的连续空行则报错
15+
"@typescript-eslint/no-unused-vars": ["warn", {"varsIgnorePattern": "^_", "argsIgnorePattern": "^_"}],
1816
"no-multiple-empty-lines": ["error", { "max": 1 }],
19-
// 如果行尾有空格则报错
2017
"no-trailing-spaces": "error",
21-
// 强制在语句末尾使用分号
2218
"semi": ["error", "always"],
23-
// 强制使用双引号
2419
"quotes": ["error", "double"],
25-
// 禁止在对象和数组的最后一个元素后面使用逗号
2620
"comma-dangle": ["error", "never"],
27-
"@typescript-eslint/no-explicit-any": "off"
21+
"@typescript-eslint/no-explicit-any": "off",
22+
"@typescript-eslint/no-unsafe-function-type": "off"
2823
}
2924
}
3025
];

package.json

+20-9
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,22 @@
11
{
2-
"name": "@coderlzw/client-ws",
3-
"version": "0.0.1-beta.1",
4-
"description": "封装浏览器端的 websocket",
5-
"main": "dist/index.esm.js",
6-
"types": "dist/types/index.d.ts",
2+
"name": "@coderlzw/ws",
3+
"version": "0.0.1-1",
4+
"description": "对浏览器端的 WebSocket 和 ws 库的封装的客户端操作,支持重连等操作",
75
"author": "梁志伟",
86
"license": "MIT",
9-
"homepage": "https://github.com/coderlzw-cn/client-ws#readme",
7+
"homepage": "https://github.com/coderlzw-cn/websocket#readme",
108
"keywords": [
11-
"websocket"
9+
"websocket",
10+
"ws"
1211
],
12+
"exports": {
13+
"types": "./dist/index.d.ts",
14+
"import": "./dist/index.mjs",
15+
"require": "./dist/index.cjs"
16+
},
1317
"repository": {
1418
"type": "git",
15-
"url": "https://github.com/coderlzw-cn/client-ws"
19+
"url": "https://github.com/coderlzw-cn/websocket"
1620
},
1721
"scripts": {
1822
"build": "rollup -c",
@@ -30,13 +34,20 @@
3034
"@eslint/js": "^9.8.0",
3135
"@rollup/plugin-commonjs": "^26.0.1",
3236
"@rollup/plugin-node-resolve": "^15.2.3",
37+
"@types/node": "^22.7.9",
38+
"@types/ws": "^8.5.12",
3339
"eslint": "~9.8.0",
3440
"globals": "^15.9.0",
35-
"rollup": "^4.20.0",
41+
"rollup": "4.22.4",
3642
"rollup-plugin-cleaner": "^1.0.0",
43+
"rollup-plugin-dts": "^6.1.1",
44+
"rollup-plugin-polyfill-node": "^0.13.0",
3745
"rollup-plugin-terser": "^7.0.2",
3846
"rollup-plugin-typescript2": "^0.36.0",
3947
"typescript": "^5.5.4",
4048
"typescript-eslint": "^8.0.1"
49+
},
50+
"dependencies": {
51+
"ws": "^8.18.0"
4152
}
4253
}

0 commit comments

Comments
 (0)