生成推式请求的前提条件是,统一数据库中必须包含服务器启动的同步所需的推式请求列,并且必须能够通过单个数据库查询获得这些值。在 request_cursor 事件中提供用于选择推式请求列的数据库查询时自动生成推式请求。 有关推式请求要求的详细信息,请参见推式请求要求。
假定远程设备在 MobiLink 服务器上标识为 unique_device_ID,统一数据库包含一个名为 PushRequest 的表,该表是使用以下 SQL 语句创建的:
CREATE TABLE PushRequest ( req_id INTEGER DEFAULT AUTOINCREMENT PRIMARY KEY, poll_key VARCHAR(128), subject VARCHAR(128), content VARCHAR(128) ) |
在此示例中,您可以在统一数据库上执行以下 SQL 语句来准备推式请求:
INSERT INTO PushRequest (poll_key, subject, content) VALUES ('unique_device_ID', 'synchronize', 'ASAP'); |
使用上面的脚本将值插入 PushRequest 表本身不会生成推式请求。您必须在 MobiLink 服务器的 request_cursor 事件中建立数据库查询,以便能够选择插入值和生成推式请求。
在此示例中,可以在 MobiLink 服务器上为 request_cursor 事件脚本定义以下 SQL 语句:
SELECT poll_key, subject, content FROM PushRequest; |
unique_device_ID 设备在服务器中轮询推式通知时生成推式请求,request_cursor 事件在 PushRequest 表中检测数据。发送到设备后,推式通知主题定义为 synchronize,内容定义为 ASAP。
下表列出了每个列的推式请求限制:
列 | 类型 | 限制 |
---|---|---|
Request ID |
INTEGER |
此值必须为唯一主键。 |
Poll key |
VARCHAR |
仅在使用轻量级轮询器时需要。 对轮询键没有限制。 |
Gateway |
VARCHAR |
仅在使用网关时需要。 此值必须设置为已启用网关的名称。可以指定自己的自定义网关名称,也可以选择以下其中一个预配置网关名称:
请参见网关用作轻量级轮询器的替代方法。 |
Subject |
VARCHAR |
设置此值时避免使用非字母数字字符。大括号、尖括号、双引号、圆括号、单引号和方括号专供内部使用,不能在主题列中使用。 |
Content |
VARCHAR |
对消息内容没有限制。 |
Address |
VARCHAR |
仅在使用网关时需要。 对于 UDP 网关,此值应为 IP 地址或主机名。支持以下格式的端口号后缀:
对于 SMTP 网关,此值应为电子邮件地址。 对于 SYNC 网关和设备跟踪网关,此值应是使用 MobiLink 监听器 -t+ 选项定义的接收者名称。 请参见-t dblsn 选项。 |
Resend interval |
VARCHAR |
缺省情况下,此值按分钟计。可以指定 S、M 和 H,分别代表以秒、分钟和小时为单位。还可以将各单位组合使用;例如 如果此值为空值或未指定,则缺省情况下,仅发送一次,不重发。 |
Time to live |
VARCHAR |
缺省情况下,此值按分钟计。可以指定 S、M 和 H,分别代表以秒、分钟和小时为单位。还可以将各单位组合使用;例如, 如果此值为空值或未指定,则缺省情况下,仅发送一次,不重发。 |
通告程序通过频繁触发 request_cursor 事件检测推式请求。缺省情况下,不为此事件指定脚本;您必须提供 request_cursor 事件脚本,以使通告程序能够检测推式请求。在典型应用程序中,request_cursor 事件脚本是 SELECT 语句。 请参见request_cursor 事件。
以下示例使用 ml_add_property 系统过程为名为 Simple 的自定义通告程序创建 request_cursor 事件脚本。SELECT 语句告诉通告程序从名为 PushRequest 的表检测推式请求。
CALL ml_add_property('SIS', 'Notifier(Simple)', 'request_cursor', 'SELECT poll_key, subject, content FROM PushRequest' ); |
列的选择顺序必须与推式请求中列的指定顺序相同。 请参见推式请求要求。
有关设置通告程序事件的详细信息,请参见用于服务器启动的同步的 MobiLink 服务器设置。
如果被通知设备的相关信息在被发送并按照业务规则被满足之后从未更新,则通告程序会重发推式通知。满足推式请求后,您需要阻止通告程序检测旧的推式请求。如果发送推式通知是为了进行同步,可以使用同步脚本删除这些推式请求。
可以使用 request_delete 事件按推式请求的请求 ID 删除推式请求,但推式请求中必须包含请求 ID 列,且必须启用传送确认。
请参见:
![]() |
使用DocCommentXchange讨论此页。
|
版权 © 2013, SAP 股份公司或其关联公司. - SAP Sybase SQL Anywhere 16.0 |