https://github.com/coajs/coa-tcp
一个轻量的TCP服务框架,是COA核心库组成之一
https://github.com/coajs/coa-tcp
coa coajs tcp
Last synced: about 2 months ago
JSON representation
一个轻量的TCP服务框架,是COA核心库组成之一
- Host: GitHub
- URL: https://github.com/coajs/coa-tcp
- Owner: coajs
- License: mit
- Created: 2021-03-29T13:48:44.000Z (about 4 years ago)
- Default Branch: main
- Last Pushed: 2023-07-19T02:51:59.000Z (almost 2 years ago)
- Last Synced: 2025-03-30T13:03:46.253Z (2 months ago)
- Topics: coa, coajs, tcp
- Language: TypeScript
- Homepage: https://npmjs.com/coa-tcp
- Size: 146 KB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 5
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# coa-tcp
[](LICENSE)
[](https://www.npmjs.org/package/coa-tcp)
[](http://npm-stat.com/charts.html?package=coa-tcp)
[](https://github.com/coajs/coa-tcp/pulls)一个轻量的 TCP 服务框架,是 COA 核心库组成之一
可以快速创建一个 TCP 服务,支持单片机或物联网设备、跨平台 TCP 应用的连接。
## 特性
- **简单轻量** 基于 `Node.js` 内置的 [Net](https://nodejs.org/api/net.html) 模块,简单轻量,不依赖于其他第三方库
- **自动管理连接池** 自动维护管理客户端连接池,无需关心连接和释放的问题,专注于收发消息和业务逻辑的开发
- **TypeScript** 全部使用 TypeScript 书写,类型约束、IDE 友好## 快速开始
### 安装
```shell
yarn add coa-tcp
```### 快速开始
```typescript
import { CoaClientPool, CoaTcp } from 'coa-tcp'// 创建一个客户端连接池
const clientPool = new CoaClientPool()// 创建一个tcp服务
const tcpServer = new CoaTcp(clientPool, 5000)// 启动服务
tcpServer.start()
```当控制台输出类似提示,则说明 TCP 服务已经正常启动,可以接受客户端的连接了
```shell
[TCP] Listening on port 5000
```### 自定义客户端
```typescript
import { Socket } from 'net'
import { CoaClient, CoaClientPool, CoaTcp } from 'coa-tcp'// 自定义客户端
class CustomClient extends CoaClient {
// 接收到数据
async onData(raw: Buffer) {
// 收到数据后要处理的事情
}// 上线
async onOnline(deviceId: string) {
super.onOnline(deviceId)
// 客户端上线要处理的事情
}// 下线
async onOffline(deviceId: string) {
super.onOffline(deviceId)
// 客户端下线要处理的事情
}
}// 自定义客户端连接池
class CustomClientPool extends CoaClientPool {
// 生成一个自定义的客户端
newClient(socket: Socket) {
return new CustomClient(
socket,
`custom-id-${++this.increment}`,
'CustomClient'
)
}
}// 创建一个客户端连接池
const clientPool = new CustomClientPool()// 创建一个tcp服务
const tcpServer = new CoaTcp(clientPool, 5000)// 启动服务
tcpServer.start()
```