BRIEF DESCRIPTION OF THE DRAWINGS
The present invention will be understood and appreciated more fully from the following detailed description taken in conjunction with the appended drawings in which:
FIG. 1A, is a simplified conceptual illustration of a system for stateless publish/subscribe messaging using SIP, constructed and operative in accordance with a preferred embodiment of the present invention;
FIG. 1B is a simplified flowchart illustration of an exemplary method of operation of the system of FIG. 1A, operative in accordance with a preferred embodiment of the present invention;
FIG. 2A is a simplified flowchart illustration of a method for providing durable SIP subscriptions, operative in accordance with a preferred embodiment of the present invention; and
FIG. 2B is a simplified flowchart illustration of a method for publishing durable SIP subscriptions, operative in accordance with a preferred embodiment of the present invention.
DETAILED DESCRIPTION
Reference is now made to FIG. 1A, which is a simplified conceptual illustration of a system for stateless publish/subscribe messaging using SIP, constructed and operative in accordance with a preferred embodiment of the present invention, and additionally to FIG. 1B, which is a simplified flowchart illustration of an exemplary method of operation of the system of FIG. 1A, operative in accordance with a preferred embodiment of the present invention. In the system and method of FIGS. 1A and 1B, an SIP subscriber client 100, such as may reside on a computing platform 102 such as a personal computer or a cellular telephone, submits a subscription to an SIP server 104, such as an SIP presence server, for information regarding an entity 106, such as a basketball news topic. In order to distinguish from the stateful SIP “presentity,” the term “entity” is used herein to indicate that SIP entities as implemented in the context of the present invention may be “stateless,” in that messages that are published for stateless entities are not intended to indicate a current entity state, and include, as such, “stateless” information. An SIP publisher 108, such as may reside on a computing platform 110 submits publications associated with entity 106 to server 104. Whereas in classic SIP applications such a subscription is for stateful information regarding the current state of an entity which is maintained by server 104 in a state table 112 (e.g., status is online, offline, busy, etc., where the entity is, for example, a cellular telephone subscriber), in accordance with the present invention the subscription may be for stateless information, such as a basketball game score published in connection with entity 106, being the basketball news topic in the present example. This may be accomplished by publisher 108 using a standard SIP PUBLISH message with the EXPIRES header field set to a predetermined value, such as zero, a non-zero value, or a value exceeding a predefined maximum value. Server 104 may in turn be configured to recognize the predetermined value of the EXPIRES header field as identifying a publication of stateless information regarding entity 106, and not including stateful information that is to be maintained as such by server 104. Server 104 thus forwards such publications to subscriber 100 without updating state table 112, as the publication is of stateless information. Alternatively, a separate header field may be used to identify the PUBLISH message as carrying stateless information, instead of using the EXPIRES field. Server 104 may then be configured to identify this field as such.
The system of FIG. 1A may be used to provide content-based subscriptions, where subscribers may define filtering criteria and receive messages that match their criteria. Content-based filtering is enabled by associating an event schema with a message. An event schema, which is sometimes referred to as a message schema, defines the type of the information contained in a message, with the system of FIG. 1A preferably supporting multiple event schemas. For example, the schema for sports news may define a news item as containing the following attributes: title, sports (e.g., basketball, football, etc.) league, teams mentioned, individual players mentioned and item body. Server 104 may support content-based subscriptions for stateless messages using standard SIP subscriptions. Subscriber 100 may submit a SIP subscription for entity 106, such as basketball news topic, and include filtering criteria such as [league=“NB36”] and [players INCLUDE “Michael Jordan”]. Server 104 preferably checks filtering criteria for messages published in connection with entity 106, forwarding only those messages that meet the criteria to subscriber 100.
Reference is now made to FIG. 2A, which is a simplified flowchart illustration of a method for providing durable SIP subscriptions, operative in accordance with a preferred embodiment of the present invention, and additionally to FIG. 2B, which is a simplified flowchart illustration of a method for publishing for durable SIP subscriptions, operative in accordance with a preferred embodiment of the present invention. In the method of FIGS. 2A and 2B, which may be implemented by the system of FIG. 1A, support for durable subscriptions may be provided by server 104 upon receiving a request from subscriber 100 for a durable subscription. Such a request may be conveyed as part of the subscription by using a field to indicate whether or not the subscription is a durable subscription. Server 104 may in turn be configured to recognize whether or not a subscription is a durable subscription, storing published messages intended for subscriber 100 while subscriber 100 is not active, and forwarding stored messages to subscriber 100 when subscriber 100 again becomes active and resumes the subscription. Whereas in JMS™ “not active” typically refers to a connection to a JMS™ server that is severed, in accordance with the present invention a subscriber is considered to be “not active” with regard to an SIP session when the client fails to acknowledge the receipt of a NOTIFY message. Server 104 may retain the messages until subscriber 100 acknowledges receipt of the messages, or until the subscription expires. If additional messages associated with entity 106 are published while subscriber 100 is not active, server 104 preferably stores the messages and does not attempt to send the messages to subscriber 100. Subscriber 100 may again become active by resuming the subscription, such as by sending a SUBSCRIBE message for entity 106. If subscriber 100 resumes the subscription before it expires, server 104 preferably sends all the stored messages that were stored to subscriber 100. The stored messages may be sent one by one using NOTIFY messages. Preferably, only after subscriber 100 acknowledges the receipt of the NOTIFY message is the message removed from the buffer of messages waiting to be sent to subscriber 100.
Since SIP allows subscriptions to have distant expiration dates, a time limit may be placed on the life of a durable subscription, such as to avoid overflow of stored messages at server 104. For example, whereas the SIP protocol definition does not put any limit on the expiration period, server 104 may be configured to have a limit on the expiration of durable subscriptions.
It is appreciated that the present invention will allow SIP applications to implement publish/subscribe messaging for stateless events at the server while supporting durable subscriptions.
It is appreciated that one or more of the steps of any of the methods described herein may be omitted or carried out in a different order than that shown, without departing from the true spirit and scope of the invention.
While the methods and apparatus disclosed herein may or may not have been described with reference to specific computer hardware or software, it is appreciated that the methods and apparatus described herein may be readily implemented in computer hardware or software using conventional techniques.
While the present invention has been described with reference to one or more specific embodiments, the description is intended to be illustrative of the invention as a whole and is not to be construed as limiting the invention to the embodiments shown. It is appreciated that various modifications may occur to those skilled in the art that, while not specifically shown herein, are nevertheless within the true spirit and scope of the invention.