• 设为首页
  • 点击收藏
  • 手机版
    手机扫一扫访问
    迪恩网络手机版
  • 关注官方公众号
    微信扫一扫关注
    公众号

TypeScript events.Emitter类代码示例

原作者: [db:作者] 来自: [db:来源] 收藏 邀请

本文整理汇总了TypeScript中@coder/events.Emitter的典型用法代码示例。如果您正苦于以下问题:TypeScript Emitter类的具体用法?TypeScript Emitter怎么用?TypeScript Emitter使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。



在下文中一共展示了Emitter类的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的TypeScript代码示例。

示例1: Promise

	return new Promise((resolve, reject): void => {
		const socket = new WebSocket(connectionUrl);
		const closeEmitter = new Emitter<TunnelCloseEvent>();
		const dataEmitter = new Emitter<ArrayBuffer>();
		const connection: ClientConnection = {
			get onClose(): Event<TunnelCloseEvent> {
				return closeEmitter.event;
			},
			get onData(): Event<ArrayBuffer> {
				return dataEmitter.event;
			},
			send(data: ArrayBuffer): void {
				socket.send(data);
			},
		};
		socket.binaryType = "arraybuffer";
		socket.addEventListener("message", (event) => {
			dataEmitter.emit(event.data);
		});
		socket.addEventListener("error", (event) => {
			reject("uncertain");
		});
		socket.addEventListener("open", () => {
			resolve(connection);
		});
		socket.addEventListener("close", (event) => {
			closeEmitter.emit({
				code: event.code,
				reason: event.reason,
			});
		});
	});
开发者ID:AhmadAlyTanany,项目名称:code-server,代码行数:32,代码来源:client.ts


示例2:

			done: (err: Error): void => {
				const removed: number[] = [];
				ports.forEach((value, key) => {
					if (value !== scanTime) {
						// Remove port
						removed.push(key);
						ports.delete(key);
					}
				});
				if (removed.length > 0) {
					removeEmitter.emit(removed);
				}

				if (added.length > 0) {
					addEmitter.emit(added);
				}

				onCompleted(err);
			},
开发者ID:AhmadAlyTanany,项目名称:code-server,代码行数:19,代码来源:portScanner.ts


示例3: netstat

export const createPortScanner = (scanInterval: number = 250): PortScanner => {
	const ports = new Map<number, number>();

	const addEmitter = new Emitter<number[]>();
	const removeEmitter = new Emitter<number[]>();

	const scan = (onCompleted: (err?: Error) => void): void => {
		const scanTime = Date.now();
		const added: number[] = [];
		netstat({
			done: (err: Error): void => {
				const removed: number[] = [];
				ports.forEach((value, key) => {
					if (value !== scanTime) {
						// Remove port
						removed.push(key);
						ports.delete(key);
					}
				});
				if (removed.length > 0) {
					removeEmitter.emit(removed);
				}

				if (added.length > 0) {
					addEmitter.emit(added);
				}

				onCompleted(err);
			},
			filter: {
				state: "LISTEN",
			},
		}, (data: {
			readonly protocol: string;
			readonly local: {
				readonly port: number;
				readonly address: string;
			};
		}) => {
				// https://en.wikipedia.org/wiki/Registered_port
				if (data.local.port <= 1023 || data.local.port >= 49151) {
					return;
				}
				// Only forward TCP ports
				if (!data.protocol.startsWith("tcp")) {
					return;
				}

				if (!ports.has(data.local.port)) {
					added.push(data.local.port);
				}
				ports.set(data.local.port, scanTime);
			});
	};

	let lastTimeout: NodeJS.Timer | undefined;
	let disposed: boolean = false;

	const doInterval = (): void => {
		scan(() => {
			if (disposed) {
				return;
			}
			lastTimeout = setTimeout(doInterval, scanInterval);
		});
	};

	doInterval();

	return {
		get ports(): number[] {
			return Array.from(ports.keys());
		},
		get onAdded(): Event<number[]> {
			return addEmitter.event;
		},
		get onRemoved(): Event<number[]> {
			return removeEmitter.event;
		},
		dispose(): void {
			if (typeof lastTimeout !== "undefined") {
				clearTimeout(lastTimeout);
			}
			disposed = true;
		},
	};
};
开发者ID:AhmadAlyTanany,项目名称:code-server,代码行数:87,代码来源:portScanner.ts


示例4:

		socket.addEventListener("close", (event) => {
			closeEmitter.emit({
				code: event.code,
				reason: event.reason,
			});
		});
开发者ID:AhmadAlyTanany,项目名称:code-server,代码行数:6,代码来源:client.ts



注:本文中的@coder/events.Emitter类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


鲜花

握手

雷人

路过

鸡蛋
该文章已有0人参与评论

请发表评论

全部评论

专题导读
上一篇:
TypeScript logger.field函数代码示例发布时间:2022-05-28
下一篇:
TypeScript util.platformNormalizePath函数代码示例发布时间:2022-05-28
热门推荐
热门话题
阅读排行榜

扫描微信二维码

查看手机版网站

随时了解更新最新资讯

139-2527-9053

在线客服(服务时间 9:00~18:00)

在线QQ客服
地址:深圳市南山区西丽大学城创智工业园
电邮:jeky_zhao#qq.com
移动电话:139-2527-9053

Powered by 互联科技 X3.4© 2001-2213 极客世界.|Sitemap