feat: add lazy inject and websocket debug

Signed-off-by: MiaoWoo <admin@yumc.pw>
This commit is contained in:
2019-06-29 14:53:27 +08:00
parent d554b91358
commit 6780791747
13 changed files with 269 additions and 46 deletions

19
packages/ws/src/debug.ts Normal file
View File

@@ -0,0 +1,19 @@
import { getNamespacesMetadata, getNamespaceMetadata, getNamespaceListenerMetadata } from './utils'
export function getNamespaceInfo() {
let namespaces = getNamespacesMetadata();
console.log(namespaces)
return namespaces.map(namespace => {
let listenerMetadata = getNamespaceListenerMetadata(namespace.target);
console.log(namespace, listenerMetadata)
return {
namespace: namespace.name,
listeners: listenerMetadata.map(listener => {
return {
event: listener.name,
method: listener.key,
}
})
}
})
}

View File

@@ -1,7 +1,8 @@
import { inject, injectable, decorate } from "inversify";
import { interfaces } from './interfaces'
import { METADATA_KEY } from './constants'
import { METADATA_KEY, TYPE } from './constants'
import { getNamespaceListenerMetadata, getNamespacesMetadata } from './utils'
import { provideNamed, fluentProvide } from "@cc-server/ioc/src";
/**
* Socket.io Namespace
@@ -16,6 +17,10 @@ export function namespace(name?: string, ...middleware: interfaces.Middleware[])
target: target
};
decorate(injectable(), target);
//decorate(fluentProvide(TYPE.Namespace)
// .inSingletonScope()
// .whenTargetNamed(target.constructor.name)
// .done(), target);
Reflect.defineMetadata(METADATA_KEY.namespace, currentMetadata, target);
const previousMetadata: interfaces.NamespaceMetadata[] = getNamespacesMetadata();
Reflect.defineMetadata(METADATA_KEY.namespace, [currentMetadata, ...previousMetadata], Reflect);

View File

@@ -3,5 +3,7 @@ import * as io from 'socket.io'
export * from './builder'
export * from './decorators'
export * from './interfaces'
export * from './debug'
export { TYPE } from './constants'
export { getSocketContext } from './utils'
export { io }