mirror of
https://github.com/Abdulazizzn/n8n-enterprise-unlocked.git
synced 2025-12-18 10:31:15 +00:00
feat(core): Initial support for two-way communication over websockets (#7570)
- Enable two-way communication with web sockets - Enable sending push messages to specific users - Add collaboration service for managing active users for workflow Missing things: - State is currently kept only in memory, making this not work in multi-master setups - Removing a user from active users in situations where they go inactive or we miss the "workflow closed" message - I think a timer based solution for this would cover most edge cases. I.e. have FE ping every X minutes, BE removes the user unless they have received a ping in Y minutes, where Y > X - FE changes to be added later by @MiloradFilipovic Github issue / Community forum post (link here to close automatically): --------- Co-authored-by: कारतोफ्फेलस्क्रिप्ट™ <aditya@netroy.in>
This commit is contained in:
@@ -503,58 +503,74 @@ export type IPushData =
|
||||
| PushDataRemoveNodeType
|
||||
| PushDataTestWebhook
|
||||
| PushDataNodeDescriptionUpdated
|
||||
| PushDataExecutionRecovered;
|
||||
| PushDataExecutionRecovered
|
||||
| PushDataActiveWorkflowUsersChanged;
|
||||
|
||||
type PushDataExecutionRecovered = {
|
||||
type PushDataActiveWorkflowUsersChanged = {
|
||||
data: IActiveWorkflowUsersChanged;
|
||||
type: 'activeWorkflowUsersChanged';
|
||||
};
|
||||
|
||||
export type PushDataExecutionRecovered = {
|
||||
data: IPushDataExecutionRecovered;
|
||||
type: 'executionRecovered';
|
||||
};
|
||||
|
||||
type PushDataExecutionFinished = {
|
||||
export type PushDataExecutionFinished = {
|
||||
data: IPushDataExecutionFinished;
|
||||
type: 'executionFinished';
|
||||
};
|
||||
|
||||
type PushDataExecutionStarted = {
|
||||
export type PushDataExecutionStarted = {
|
||||
data: IPushDataExecutionStarted;
|
||||
type: 'executionStarted';
|
||||
};
|
||||
|
||||
type PushDataExecuteAfter = {
|
||||
export type PushDataExecuteAfter = {
|
||||
data: IPushDataNodeExecuteAfter;
|
||||
type: 'nodeExecuteAfter';
|
||||
};
|
||||
|
||||
type PushDataExecuteBefore = {
|
||||
export type PushDataExecuteBefore = {
|
||||
data: IPushDataNodeExecuteBefore;
|
||||
type: 'nodeExecuteBefore';
|
||||
};
|
||||
|
||||
type PushDataConsoleMessage = {
|
||||
export type PushDataConsoleMessage = {
|
||||
data: IPushDataConsoleMessage;
|
||||
type: 'sendConsoleMessage';
|
||||
};
|
||||
|
||||
type PushDataReloadNodeType = {
|
||||
export type PushDataReloadNodeType = {
|
||||
data: IPushDataReloadNodeType;
|
||||
type: 'reloadNodeType';
|
||||
};
|
||||
|
||||
type PushDataRemoveNodeType = {
|
||||
export type PushDataRemoveNodeType = {
|
||||
data: IPushDataRemoveNodeType;
|
||||
type: 'removeNodeType';
|
||||
};
|
||||
|
||||
type PushDataTestWebhook = {
|
||||
export type PushDataTestWebhook = {
|
||||
data: IPushDataTestWebhook;
|
||||
type: 'testWebhookDeleted' | 'testWebhookReceived';
|
||||
};
|
||||
|
||||
type PushDataNodeDescriptionUpdated = {
|
||||
export type PushDataNodeDescriptionUpdated = {
|
||||
data: undefined;
|
||||
type: 'nodeDescriptionUpdated';
|
||||
};
|
||||
|
||||
export interface IActiveWorkflowUser {
|
||||
user: User;
|
||||
lastSeen: Date;
|
||||
}
|
||||
|
||||
export interface IActiveWorkflowUsersChanged {
|
||||
workflowId: Workflow['id'];
|
||||
activeUsers: IActiveWorkflowUser[];
|
||||
}
|
||||
|
||||
export interface IPushDataExecutionRecovered {
|
||||
executionId: string;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user