传输层实现(客户端/服务端,链接管理和心跳机制,重连机制)

消息序列化(json序列化,消息压缩,消息ID和时间戳)
网络服务器核心(networkserver/基础room/链接状态同步)
网络客户端核心(networkclient/消息队列)
This commit is contained in:
YHH
2025-08-14 23:59:00 +08:00
parent 32092f992d
commit 6730a5d625
29 changed files with 8100 additions and 236 deletions

View File

@@ -0,0 +1,85 @@
/**
* 网络层专用的EventEmitter实现
* 继承自core库的Emitter提供简单的事件API
*/
import { Emitter } from '@esengine/ecs-framework';
/**
* 网络事件发射器,专为网络层设计
* 使用字符串或symbol作为事件类型简化API
*/
export class EventEmitter extends Emitter<string | symbol, void> {
constructor() {
super();
}
/**
* 添加事件监听器
* @param event 事件名称
* @param listener 监听函数
*/
public on(event: string | symbol, listener: Function): this {
this.addObserver(event, listener, undefined as void);
return this;
}
/**
* 添加一次性事件监听器
* @param event 事件名称
* @param listener 监听函数
*/
public once(event: string | symbol, listener: Function): this {
const onceWrapper = (...args: any[]) => {
listener.apply(this, args);
this.removeObserver(event, onceWrapper);
};
this.addObserver(event, onceWrapper, undefined as void);
return this;
}
/**
* 移除事件监听器
* @param event 事件名称
* @param listener 监听函数,不传则移除所有
*/
public off(event: string | symbol, listener?: Function): this {
if (listener) {
this.removeObserver(event, listener);
} else {
this.removeAllObservers(event);
}
return this;
}
/**
* 移除事件监听器(别名)
*/
public removeListener(event: string | symbol, listener: Function): this {
return this.off(event, listener);
}
/**
* 移除所有监听器
*/
public removeAllListeners(event?: string | symbol): this {
this.removeAllObservers(event);
return this;
}
/**
* 获取监听器数量
*/
public listenerCount(event: string | symbol): number {
return this.getObserverCount(event);
}
/**
* 发射事件兼容Node.js EventEmitter
* @param event 事件名称
* @param args 事件参数
*/
public override emit(event: string | symbol, ...args: any[]): boolean {
super.emit(event, ...args);
return true;
}
}

View File

@@ -0,0 +1,4 @@
/**
* 网络层工具类
*/
export * from './EventEmitter';