freeRoutine增加了socket入口
This commit is contained in:
parent
b36268f1c7
commit
9ad4b0ef6f
|
|
@ -1,18 +1,21 @@
|
|||
import { RecurrenceRule, RecurrenceSpecDateRange, RecurrenceSpecObjLit } from 'node-schedule';
|
||||
import { EntityDict } from './Entity';
|
||||
import { EntityDict, OperationResult } from './Entity';
|
||||
import { EntityDict as BaseEntityDict } from '../base-app-domain';
|
||||
import { AsyncContext } from '../store/AsyncRowStore';
|
||||
import { Watcher } from './Watcher';
|
||||
import { OperationResult } from '.';
|
||||
type FreeOperateFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (context: Cxt) => Promise<OperationResult<ED>>;
|
||||
import { Namespace } from 'socket.io';
|
||||
type FreeRoutineFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (context: Cxt, env: {
|
||||
socket: Namespace;
|
||||
}) => Promise<OperationResult<ED>>;
|
||||
type FreeTimerFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (context: Cxt) => Promise<OperationResult<ED>>;
|
||||
export type FreeRoutine<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
|
||||
name: string;
|
||||
routine: FreeOperateFn<ED, Cxt>;
|
||||
routine: FreeRoutineFn<ED, Cxt>;
|
||||
};
|
||||
export type FreeTimer<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
|
||||
name: string;
|
||||
cron: RecurrenceRule | RecurrenceSpecDateRange | RecurrenceSpecObjLit | Date | string | number;
|
||||
timer: FreeOperateFn<ED, Cxt>;
|
||||
timer: FreeTimerFn<ED, Cxt>;
|
||||
singleton?: true;
|
||||
};
|
||||
export type Routine<ED extends EntityDict & BaseEntityDict, T extends keyof ED, Cxt extends AsyncContext<ED>> = FreeRoutine<ED, Cxt> | Watcher<ED, T, Cxt>;
|
||||
|
|
|
|||
|
|
@ -45,6 +45,7 @@
|
|||
"dependencies": {
|
||||
"dayjs": "^1.11.9",
|
||||
"node-schedule": "^2.1.1",
|
||||
"socket.io": "^4.7.2",
|
||||
"uuid": "^9.0.0",
|
||||
"webidl-conversions": "^5.0.0"
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,23 +1,28 @@
|
|||
import { RecurrenceRule, RecurrenceSpecDateRange, RecurrenceSpecObjLit } from 'node-schedule';
|
||||
import { EntityDict } from './Entity';
|
||||
import { EntityDict, OperationResult } from './Entity';
|
||||
import { EntityDict as BaseEntityDict } from '../base-app-domain';
|
||||
import { AsyncContext } from '../store/AsyncRowStore';
|
||||
import { Watcher } from './Watcher';
|
||||
import { OperationResult } from '.';
|
||||
import { Namespace } from 'socket.io';
|
||||
|
||||
type FreeOperateFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (
|
||||
context: Cxt
|
||||
type FreeRoutineFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (
|
||||
context: Cxt,
|
||||
env: {
|
||||
socket: Namespace;
|
||||
}
|
||||
) => Promise<OperationResult<ED>>;
|
||||
|
||||
type FreeTimerFn<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = (context: Cxt) => Promise<OperationResult<ED>>;
|
||||
|
||||
export type FreeRoutine<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
|
||||
name: string;
|
||||
routine: FreeOperateFn<ED, Cxt>;
|
||||
routine: FreeRoutineFn<ED, Cxt>;
|
||||
};
|
||||
|
||||
export type FreeTimer<ED extends EntityDict & BaseEntityDict, Cxt extends AsyncContext<ED>> = {
|
||||
name: string;
|
||||
cron: RecurrenceRule | RecurrenceSpecDateRange | RecurrenceSpecObjLit | Date | string | number;
|
||||
timer: FreeOperateFn<ED, Cxt>;
|
||||
timer: FreeTimerFn<ED, Cxt>;
|
||||
singleton?: true; // 置singleton意味着在集群环境中只有一个进程会去执行
|
||||
};
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue