當前位置: 首頁>>代碼示例>>TypeScript>>正文


TypeScript events.Emitter類代碼示例

本文整理匯總了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;未經允許,請勿轉載。