Real-time Chat

Enterprise Feature

Real-time chat is only available in the enterprise edition when both cibseven.webclient.modeler.enabled: true and cibseven.webclient.modeler.chat.enabled: true. See Enable / Disable.

The modeler includes a real-time chat panel for collaborating on diagrams. Users in the same room can send messages, see who is online, and attach comments to specific BPMN elements.

WebSocket Connection

Chat uses STOMP over WebSocket. Clients connect to:

ws://{host}/ws/chat

Authentication is performed on the STOMP CONNECT frame. Pass the session token as an Authorization header:

CONNECT
Authorization: Bearer <token>

The server validates the token and associates the authenticated user with the WebSocket session for its entire lifetime.

Topics

Topic Direction Description
/topic/chat/{roomId} Subscribe Receive new, edited, and deleted messages in real time
/topic/chat/{roomId}/presence Subscribe Receive live updates of who is currently online in the room
/app/chat/{roomId} Publish Send a new message to the room

Room ID

The roomId is a composite key that combines context and diagram ID:

{context}:{diagramId}

For example: modeler:abc123-def456.

The context prefix namespaces the room, ensuring diagrams from different parts of the application do not share a chat history.

Sending a Message

Publish a JSON payload to /app/chat/{roomId}:

{
  "content": "Hello, team!",
  "elementId": "Task_1"
}
Field Required Description
content Yes Message text (must not be blank)
elementId No BPMN element ID to attach the message to a specific element

Presence

When a user subscribes to /topic/chat/{roomId}, the server adds them to the room’s presence list and immediately broadcasts the updated list to /topic/chat/{roomId}/presence. The broadcast is repeated whenever someone subscribes, unsubscribes, or disconnects.

The current presence snapshot can also be retrieved at any time via the REST API — see REST API.

Message History

Previous messages are not delivered over WebSocket on subscribe. Fetch history on initial load via the REST endpoint:

GET {basePath}/chat/{roomId}/history

See REST API for parameters.

Chat Tab Behavior

The Properties panel in the modeler shows a Properties / Chat tab bar when chat.enabled: true.

Unsaved diagrams — The Chat tab is visually disabled and shows the tooltip “Save the diagram to use the chat”. Clicking it has no effect. The Properties tab always remains accessible.

Switching diagrams — If the Chat tab is open and the user switches to a diagram that has not been saved yet, the panel automatically collapses back to the Properties tab. This prevents the user from being left with an open but non-functional chat panel on an unsaved diagram.

Once a diagram is saved, the Chat tab becomes active and the WebSocket connection is established when it is selected.

Database

Messages are persisted in the chat_messages table. See Database Schema.

On this Page: