All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog and this project adheres to Semantic Versioning.
- Redis lookup for websocket via CDS env
cds.requires.redis-websocket
- Redis adapter error handling
- Socket.IO implementation does not use server
path
option anymore, in alignment with kindws
- Use
io("/ws/chat")
instead ofio("/chat", { path: "/ws" })
- Support for http conform headers (
x-ws
andx-websocket
) - Revise error handling for websocket events
- Fix for operations without parameters
- Fix support for absolute service paths
- Update documentation
- Provide event headers to formatter
- Support exclusion of event contexts
- Include or exclude defined list of users
- Add support for Cloud Events with format
cloudevent
resp.cloudevents
- Overrule path of websocket event via
@websocket.path
or@ws.path
for non-websocket services - Overrule format of websocket event via
@websocket.format
or@ws.format
for non-websocket services - Ignore event elements or operation parameters with
@websocket.ignore
or@ws.ignore
- Improve documentation and examples
- Allow empty PCP message in event definition
- Optimization of client determination for kind
ws
- Ignore not modeled PCP fields in payload serialization
- Fix annotations value derivation for non-websocket service events
- Fix annotations
wsCurrentUserInclude
,currentUserInclude
,wsCurrentUserExclude
,currentUserExclude
- Support SAP Push Channel Protocol (PCP)
- Option to include or exclude identifiers
- Option to include or exclude current user
- Better CDS context handling
- CDS 8.2 compatibility
- CDS 8.1 compatibility
- CDS 8 compatibility
- CI Matrix Test Node 22
- Use
cds.context
instead ofws.request
to derive user and tenant - Add
cds.requires.kinds
for websockets and merge config - Pass all
cds.env.websocket
config to adapter and redis implementation - Streamline
cds.env
access in socket and redis implementation - Refactor unit-tests to be grouped by implementation
- Fix access to undefined request user for unauthenticated requests
- Redis lookup via custom
vcap
environment configuration
- First major release
- Exclude a client socket instance via a consumer-defined identifier
- Clear existing redis clients before shutdown
- Call unknown adapter implementations for Socket.IO
- Normalize logging layer
- Add option to activate Redis adapter in other (non-local) environments (e.g. Kyma)
- Fix Redis re-connect behavior to prevent Redis overload
- Pass adapter configurations to Redis client creation
- Allows to provide event emit headers to dynamically control websocket processing without annotations
- Describe the usage of CDS persistent outbox for websocket events
- Introduce optional
user
concept to broadcast event, except to current context user via annotation@websocket.user
or@ws.user
- Allow to suppress CRUD event broadcast via
@websocket.broadcast = 'none'
or@ws.broadcast = 'none'
- Match CRUD broadcast event with CDS service event to filter broadcast data
- Fix leakage of internal processing information to websocket clients
- Allow custom server implementations via
cds.websocket.impl
- Allow custom adapter implementations via
cds.websocket.adapter.impl
(kindws
only) - Allow processing of multiple event contexts by annotating event type elements of
many
orarray of
type - Support for type
date
event contexts as ISO string representation - Support for type
object
event contexts as JSON stringified representation
- Correct version confusion (0.5.1 uses 0.6.0 in package.json)
- Fix message wrapping for Redis distribution (
kind: ws
)
- Provide user context in examples and tests, to verify authorization flow
- Introduce optional
context
concept to broadcast to a client subset via annotation@websocket.context
or@ws.context
- Respect tenant isolation for event broadcasting
- Fix maxListeners issue for
ws
implementation - Refactor middlewares and authorization check
- Change
cds.ws
to point to CDS websocket server (not the native implementation, usecds.wss
orcds.io
for that)
- Option to disable websockets via env configuration
cds.websocket: false
- Add configuration schema for websocket environment via
cds.schema
for CDS plugin
- Change
cds
websocket env fromcds.requires.websocket
tocds.websocket
accessible viacds.env.websocket
npm
- Add overview graphic
- Disable Redis per default locally, option to enable it
- Option to broadcast CRUD post-events to all sockets via
@websocket.broadcast.all
or@ws.broadcast.all
- Remove Redis broadcast for kind
ws
on message receiving
- Broadcast service events without connected sockets via Redis
- Document base websocket server class
- Set websocket default kind to
ws
- Mock request response more complete
- More robust setup and error handling
- Redis off per default
- Refactoring
- Websocket events in non-websocket services
- Support multiple endpoints
- Initial release