更新network库及core库优化
This commit is contained in:
132
packages/network-server/README.md
Normal file
132
packages/network-server/README.md
Normal file
@@ -0,0 +1,132 @@
|
||||
# @esengine/ecs-framework-network-server
|
||||
|
||||
ECS Framework 网络库 - 服务端实现
|
||||
|
||||
## 概述
|
||||
|
||||
这是 ECS Framework 网络库的服务端包,提供了:
|
||||
|
||||
- 权威服务端实现
|
||||
- 客户端会话管理
|
||||
- 房间和匹配系统
|
||||
- 反作弊验证
|
||||
- 网络同步权威控制
|
||||
|
||||
## 特性
|
||||
|
||||
- **权威服务端**: 所有网络状态由服务端权威控制
|
||||
- **客户端验证**: 验证客户端输入和操作的合法性
|
||||
- **房间系统**: 支持多房间和实例管理
|
||||
- **反作弊**: 内置反作弊验证机制
|
||||
- **高性能**: 针对大量客户端连接进行优化
|
||||
|
||||
## 安装
|
||||
|
||||
```bash
|
||||
npm install @esengine/ecs-framework-network-server
|
||||
```
|
||||
|
||||
## 基本用法
|
||||
|
||||
```typescript
|
||||
import { NetworkServerManager } from '@esengine/ecs-framework-network-server';
|
||||
import { NetworkComponent, SyncVar, ServerRpc } from '@esengine/ecs-framework-network-shared';
|
||||
|
||||
// 启动服务端
|
||||
const server = new NetworkServerManager();
|
||||
await server.startServer({
|
||||
port: 7777,
|
||||
maxConnections: 100
|
||||
});
|
||||
|
||||
// 创建权威网络组件
|
||||
@NetworkComponent()
|
||||
class ServerPlayerController extends NetworkBehaviour {
|
||||
@SyncVar()
|
||||
public position: Vector3 = { x: 0, y: 0, z: 0 };
|
||||
|
||||
@SyncVar()
|
||||
public health: number = 100;
|
||||
|
||||
@ServerRpc({ requiresOwnership: true, rateLimit: 10 })
|
||||
public movePlayer(direction: Vector3): void {
|
||||
// 服务端权威的移动处理
|
||||
if (this.validateMovement(direction)) {
|
||||
this.position.add(direction);
|
||||
}
|
||||
}
|
||||
|
||||
@ServerRpc({ requiresAuth: true })
|
||||
public takeDamage(damage: number, attackerId: number): void {
|
||||
// 服务端权威的伤害处理
|
||||
if (this.validateDamage(damage, attackerId)) {
|
||||
this.health -= damage;
|
||||
|
||||
if (this.health <= 0) {
|
||||
this.handlePlayerDeath();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
```
|
||||
|
||||
## 房间系统
|
||||
|
||||
```typescript
|
||||
import { RoomManager, Room } from '@esengine/ecs-framework-network-server';
|
||||
|
||||
// 创建房间管理器
|
||||
const roomManager = new RoomManager();
|
||||
|
||||
// 创建房间
|
||||
const gameRoom = roomManager.createRoom({
|
||||
name: 'Game Room 1',
|
||||
maxPlayers: 4,
|
||||
isPrivate: false
|
||||
});
|
||||
|
||||
// 玩家加入房间
|
||||
gameRoom.addPlayer(clientId, playerData);
|
||||
|
||||
// 房间事件处理
|
||||
gameRoom.onPlayerJoined((player) => {
|
||||
console.log(`Player ${player.name} joined room ${gameRoom.name}`);
|
||||
});
|
||||
|
||||
gameRoom.onPlayerLeft((player) => {
|
||||
console.log(`Player ${player.name} left room ${gameRoom.name}`);
|
||||
});
|
||||
```
|
||||
|
||||
## 权限验证
|
||||
|
||||
```typescript
|
||||
import { AuthSystem } from '@esengine/ecs-framework-network-server';
|
||||
|
||||
// 配置认证系统
|
||||
const authSystem = new AuthSystem({
|
||||
tokenSecret: 'your-secret-key',
|
||||
sessionTimeout: 30 * 60 * 1000, // 30分钟
|
||||
maxLoginAttempts: 5
|
||||
});
|
||||
|
||||
// 客户端认证
|
||||
authSystem.onClientAuth(async (clientId, credentials) => {
|
||||
const user = await validateCredentials(credentials);
|
||||
if (user) {
|
||||
return { userId: user.id, permissions: user.permissions };
|
||||
}
|
||||
return null;
|
||||
});
|
||||
|
||||
// RPC 权限检查
|
||||
@ServerRpc({ requiresAuth: true, requiresOwnership: true })
|
||||
public adminCommand(command: string): void {
|
||||
// 只有已认证且拥有权限的客户端可以调用
|
||||
this.executeAdminCommand(command);
|
||||
}
|
||||
```
|
||||
|
||||
## License
|
||||
|
||||
MIT
|
||||
Reference in New Issue
Block a user