Notifications 未调用oneM2M数据通知处理程序

Notifications 未调用oneM2M数据通知处理程序,notifications,subscription,onem2m,Notifications,Subscription,Onem2m,我不熟悉onem2m,并使用IoTDM Karaf实现来学习初始步骤。我还将同一项目中的邮差包用作学习工具。我也能够从自己的代码(html、ajax、php)执行CRUD操作和其他直接操作。我已经阅读了spec文档(虽然不是完整的捆绑包,但相当多)和家庭照明的开发者指南示例和实现示例 我现在陷入困境的是,我已经成功注册了一个订阅,通知uri“nu”指向同一网络上不同apache服务器中的php。邮递员/谷歌Rest客户端可以向其发布数据。我甚至添加了一个CORS标题以避免任何疑问。我已经指定了“

我不熟悉onem2m,并使用IoTDM Karaf实现来学习初始步骤。我还将同一项目中的邮差包用作学习工具。我也能够从自己的代码(html、ajax、php)执行CRUD操作和其他直接操作。我已经阅读了spec文档(虽然不是完整的捆绑包,但相当多)和家庭照明的开发者指南示例和实现示例

我现在陷入困境的是,我已经成功注册了一个订阅,通知uri“nu”指向同一网络上不同apache服务器中的php。邮递员/谷歌Rest客户端可以向其发布数据。我甚至添加了一个CORS标题以避免任何疑问。我已经指定了“nu”:http//full IP/phpfile.php。然后我从Postman创建了一个内容实例。我期待我的php被调用。这个期望有效吗

我只是将post数据转储到我的/var/www/html文件夹中的一个文件中。这正如预期的那样有效。我测试了编写一个小html并从另一台服务器上运行它。因此,这不是CORS问题或文件系统访问问题。通知实施是否到位?我的兴趣不在物联网边缘设备端,而是在后端,我希望从设备收集数据。我没有看到任何示例详细说明通知处理程序的实现

任何指点,即使不是直接的答案也会有帮助。提前感谢。

创建资源时,托管CSE可能会发送通知以执行订阅验证。此验证的接收者是中设置的notificationURI。通过这种方式,CSE可以确保接收者确实是能够并且应该处理通知的人

为此,在创建资源之前,通知接收器(您的PHP脚本)必须运行并正确回答验证请求。否则,CSE不得向给定URI发送通知

您的通知接收器是否已启动并运行,它是否正确回答了验证请求

另请参见“TS-0004-服务层核心协议规范”,章节“7.5.1.2.2资源通知”

更新

通知服务器应检查vrq元素的POST请求的内容。这表示验证请求。如果服务器想要接受请求,它应该返回HTTP错误代码“200”以及值为“2000”的响应头“X-M2M-RSC”。

创建资源时,托管CSE可能会发送通知以执行订阅验证。此验证的接收者是中设置的notificationURI。通过这种方式,CSE可以确保接收者确实是能够并且应该处理通知的人

为此,在创建资源之前,通知接收器(您的PHP脚本)必须运行并正确回答验证请求。否则,CSE不得向给定URI发送通知

您的通知接收器是否已启动并运行,它是否正确回答了验证请求

另请参见“TS-0004-服务层核心协议规范”,章节“7.5.1.2.2资源通知”

更新


通知服务器应检查vrq元素的POST请求的内容。这表示验证请求。如果服务器想要接受请求,它应该返回HTTP错误代码“200”以及响应头“X-M2M-RSC”,其值为“2000”。

Big leap。我让通知处理程序点击我的回调php。首先,我使用ODL IoTDM的“碳”释放。然后我必须安装odl-iotdm-onem2m功能。这一个附带了一个odl-onem2m-notifier,我认为它是旧服务器中缺少的组件。现在,当我注册订阅并添加内容实例时,我的php将被调用

我没有看到@akr的请求验证和其他类似提示。我想我必须找到一个更新的服务器实现。但我认为,这个问题已经得到了回答


非常感谢@akr的耐心和回复。

大跃进。我让通知处理程序点击我的回调php。首先,我使用ODL IoTDM的“碳”释放。然后我必须安装odl-iotdm-onem2m功能。这一个附带了一个odl-onem2m-notifier,我认为它是旧服务器中缺少的组件。现在,当我注册订阅并添加内容实例时,我的php将被调用

我没有看到@akr的请求验证和其他类似提示。我想我必须找到一个更新的服务器实现。但我认为,这个问题已经得到了回答


非常感谢@akr的耐心和回复。

脚本可以访问,但我不知道验证请求。我们将对此进行研究并更新。谢谢你的指导。嗨,阿克尔,再挖一点。我盲目地丢弃了我在php中得到的头,逻辑是verificationRequest将命中我的处理程序,我至少知道一个叫做我的例程的东西。但什么都没有。像往常一样,我检查了另一个浏览器的帖子,我在日志文件中得到了标题转储!输入postedit而不是newline:-)新手问题。无论如何,我也可以看到CSE的discoverAllChildren中列出的订阅。这是否意味着接受订阅?无论如何,我正在继续阅读这些文件。当我发现更多内容时,将进行更新。您应该检查POST请求中的vrq元素内容。这表示验证请求。如果要接受请求,应返回HTTP错误代码“200”以及响应头“X-M2M-RSC”,值为“2000”。无进展。这与vrq无关。我刚刚在php中添加了一个带有$\u SERVER['REQUEST\u METHOD']的文件\u put\u contents()。这基本上应该在它被调用后立即起作用。没有发生