Fixed the protocol document, in which all descriptions and practical examples still reported the previous version number.
Clarified in the protocol document what race conditions are possible due to the asynchronous semantics of some messages.
Fixed the protocol document, in which all descriptions and practical examples still reported the previous version number.
Clarified in the protocol document what race conditions are possible due to the asynchronous semantics of some messages.
Introduced an alternative request syntax to modify an existing MPN subscription,
as a control request variant similar to LS_op=activate, with the new parameter
LS_op=pn_reconf. This variant does not modify the subscription-related
parameters, but only the notification-related parameters, hence it is safer
to use if multiple sessions may act on behalf of the same device.
The extension also introduces the new MPNCONF notification of the streaming
channel. COMPATIBILITY NOTE: Existing clients
using version 2.2.0 or earlier, in order to upgrade to 2.3.0, should ensure
that the new notification is handled (although it will be received only when
LS_op=pn_reconf is leveraged).
The extension also introduces the new error code 56 for control requests,
only used in response to LS_op=pn_reconf requests.
Introduced the new error code 3 for control requests, that can be issued when the request refers to a session with a different protocol, which doesn't support the request. COMPATIBILITY NOTE: Existing clients using version 2.2.0 or earlier, in order to upgrade to 2.3.0, should ensure that the new error code is accepted for all control requests.
Added the optional LS_ack parameter to subscription and unsubscription requests on WebSocket transport, to save the REQOK response when successful.
Introduced the WSOK request message, available on websockets to test the correct working of the connection in a fast way.
Extended the possibility to issue control requests on a websocket by omitting the session ID, to refer to the session related with the last create_session or bind_session request. Now such a control request can follow a create/bind immediately, regardless that the processing of the latter has even started.
Added new error codes on create_session requests. Namely:
Introduced an optional LS_ttl_millis parameter on create_session requests, to notify the Server of the "time to live" assigned to a request by the Client.
Introduced an optional LS_reduce_head parameter on create_session and bind_session requests, to instruct the Server to omit some notifications on the response. The lack of such notifications is not critical and may be traded for shorter responses, especially when polling is needed.
Fixed unclear response error messages upon wrong protocol versions.
Extended the scope of error code 32 upon END messages. Previously, the code specified that a session had been closed via the JMX interface, whereas now other mechanisms that allow enforcing of session closure from the Server side may be the originating cause.
Extended the scope of error code 48 upon END messages. Previously, the code specified that a session had been closed because of expiration of the maximum duration configured, whereas now other mechanisms that allow enforcing of session expiration from the Server side are admitted.
Added session error code 21 and control error code 11, that can be received instead of, respectively, session error code 20 and control error code 20, to inform that not only a specified session was not found but it is also likely that the request was routed to the wrong Server instance. COMPATIBILITY NOTE: Existing clients using version 2.0.0 and handling error code 20, in order to upgrade to 2.1.0, should ensure that the new error codes are also handled properly. COMPATIBILITY NOTE: Existing clients using version 2.1.0 build 1851 and handling error code 20 should ensure that the new error codes are also handled properly.
Extended the scope of REQERR code 41 on the various MPN requests to all issues related with resource unavailability in the Server preventing the operation. Previously, such issues could have caused a ERROR response with code 68.
Clarified in the documentation the use of percent encoding.
Clarified in the documentation how to distinguish notifications that carry snapshot information from real-time updates.
Added clarifications on licensing matters in the documentation.
Introduced the support for Mobile Push Notifications. It consists in:
Added the support for recovery of sessions upon unexpected socket interruption during streaming or long polling. This involves an extension of the bind_session command (see LS_recovery_from), with a new error code (4) for CONERR, and a new Server notification (PROG). See the revised "Session Life Cycle" paragraph and the related "Session Recovery" example in chapter 6 for details.
Introduced the "heartbeat" pseudo-request to probe sockets and keep them alive.
Added the "LS_inactivity_millis" request parameter to create_session and bind_session
to leverage Server-side checks of client activity and heartbeats.
Removed redundant uses of the SERVNAME and CLIENTIP notifications, by allowing them to be omitted on Session rebinds when unchanged with respect to the previous time. COMPATIBILITY NOTE: Existing clients using version 2.0.0 and managing SERVNAME and/or CLIENTIP, in order to upgrade to 2.1.0, should ensure that they keep the previous value upon each rebind; in particular, they cannot expect SERVNAME and/or CLIENTIP to be always received on rebind.
Added the new Server error code 71 to the session error codes.
Clarified the syntax documentation to detail how requests can be mapped onto the
various transports (HTTP POST, WS messages, and the added case of HTTP GET).
Also clarified the requirements in terms of percent-encoding in the various cases,
by specifying for which characters the encoding is mandatory (whereas for all
other characters it is optional). Improved the provided examples accordingly,
by removing unnecessary encoding.
Restricted various syntax checks on the requests to become case-sensitive. This is not meant as a change of the TLCP protocol specifications, which always specify the correct case for the keywords. However, some examples in the protocol documentation reported the LS_reqId parameter with a wrong case and have now been fixed. COMPATIBILITY NOTE: Existing clients using version 2.0.0 in which incorrect case is used, perhaps because inspired by some of the provided examples, have to be fixed.
Thoroughly redesigned the protocol, mainly on the response side. The new protocol, named TLCP, helps achieving various improvements, such as the following:
Redefined the SDK version, which is now 2.0.0 and also represents the version of the underlying TLCP protocol. It is meant that any explicit or implicit reference to the "previous" versions of the SDK may include version 6.0.3 or earlier. The supplied build number is still increasing and can be used to disambiguate.
Restricted the syntax checks on the requests, so that some illegal cases that used to be accepted are now refused. For instance, negative numeric values were, in some cases, treated like missing values and replaced with defaults. COMPATIBILITY NOTE: No client is expected to fall into the above illegal cases.
Added the LS_cause_code parameter to LS_op=destroy requests. The supplied codes will now be possible cause codes of the "END" message. COMPATIBILITY NOTE: The newly available codes are not to be expected from the "END" message, unless extended invocations of LS_op=destroy requests are introduced.
Clarified the use of the Control Link in the protocol documentation.
Added the cause code 48 upon the "END" message (asynchronous close). COMPATIBILITY NOTE: The code can be issued only if the new <max_session_duration_minutes> setting (introduced with Lightstreamer Server build 1741) is used, hence custom clients don't have to be updated to take the code into account, as long as the Server configuration is not changed.
Extended the protocol to support the new client identification mechanism. See the added parameters for the "create_session.txt" request. COMPATIBILITY NOTE: Existing clients have to be extended with the new parameters in order to comply with the current and future versions of the protocol; however, Lightstreamer Server always guarantees the support for old clients.
Added the error code 30 upon control.txt; the case is only predisposed for future special licenses.COMPATIBILITY NOTE: custom clients which check the possible error outcomes don't have to be updated, as long as there is no change in license terms.
Removed the error code 14 upon create_session/bind_session, as it is no longer issued. The check was related with the use in custom clients of the Adapter Set used by the Monitor Console/Dashboard, which is an undocumented (and unneeded) option.
Fixed a clarification comment on the protocol documentation: the single quote is expected to be escaped in field values, not the double quote.
Updated the included examples, to reflect changes in Lightstreamer Server default configuration and predeployed Adapters.
Extended the syntax with the "Preamble" element in the response header, which may be used in specific cases for padding purpose only. COMPATIBILITY NOTE: existing custom clients that perform strict checks on the response headers may refuse the response and eventually fail to establish a session, hence they should be extended. Backward compatibility can be enforced by removing the new <use_enriched_content_type> configuration setting.
Clarified the requirements on the URL encoding of the request attributes.
Clarified the encoding of values in regard to UTF-16 surrogate pairs.
Added new possible error codes, namely 7 and 8, pertaining to both the bind_session.txt request and the END push message. COMPATIBILITY NOTE: custom clients which check the possible error outcomes may have to be revised. However, the new errors are only possible when limits on the maximum number of sessions are set, either through the <max_sessions> settings or through the JMX service or by special licenses.
Introduced a 3-decimal approximation for the reported bandwidth limit values.
Slightly revised the checks for wrong requests and the related log messages issued by Lightstreamer Server.
Revised the documentation, in regard to the names of the main concepts.
Introduced the "reconf" operation, which allows for dinamically reconfiguring the maximum frequency of currently subscribed items; see the Network Protocol Tutorial document for details.
Introduction of Lightstreamer "Duomo" release (Server 4.0).