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.