sapui5 - 从后端到客户端的 ABAP AMC 通道不起作用
问题描述
进入ABAP渠道协作,尝试实现4个场景,全部使用PCP协议,借助一些非常好的帖子。前两个由作者提供,只有所做的更改与将频道从文本转换为 PCP 相关
- 来自 SAPUI5 客户端的 Websocket 调用,来自后端的响应
基于ABAP Push / Messaging Channel 和 SAPUI5 Demo Application,它工作正常
- 后端通信
这是两种方案都工作的 AMC 通道配置(方案 1 的类,方案 2 的报告):
让前两个工作,尝试将它们结合起来
- 来自客户端的通过 websocket 的消息,传递到 SAP 会话
工作得很好(我从 SAPUI5 客户端发送了消息,它被 GUI 后端会话接收),只要我删除了 APC 通道接收器类,下面的新配置
- 来自后端的消息,传递给 SAPUI5 客户端(实际上,其他 3 个服务只是为了到达这里)
其背后的想法是从授权程序选项卡中删除报告接收器并再次将其替换为 APC 接收器类,只是这次定义为“通过会话接收”,因此我可以从发送者报告接收消息并将其转发到客户。调用 SAPUI5 应用程序,按预期打开 APC 通道的连接,调用后端报告,消息由发送方应用程序正确发送(sy-subrc = 0,无异常)但似乎无处可去,因为 a)客户端中没有任何内容和 b) (最重要的)APC类的on_message方法里面的断点没有命中(方法没有被调用)
假设所有其他 3 个场景都运行良好,是否有什么我错过/我应该看看的特定点,或者我完全错误地理解了事情并且场景 3“偶然”工作?场景 4 AMC 配置如下。
解决方案
您是否将 Push Channel 绑定到特定的 APC Channel?
METHOD if_apc_ws_extension~on_start.
TRY.
* bind the WebSocket connection to the AMC channel
DATA(lo_binding) = i_context->get_binding_manager( ).
lo_binding->bind_amc_message_consumer( i_application_id = ‘YAMC_TEST’
i_channel_id = ‘/ping’ ).
CATCH cx_apc_error INTO DATA(lx_apc_error).
DATA(lv_message) = lx_apc_error->get_text( ).
MESSAGE lx_apc_error->get_text( ) TYPE ‘E’.
ENDTRY.
ENDMETHOD.
推荐阅读
- android - 由于蓝牙连接的 Android 应用程序在 Arduino 上控制 LED 的问题
- javascript - typeahead.bundle.js:374 Uncaught TypeError: this._send 不是函数(在 ReactJs 中)
- xquery - xquery "" 和 () 的区别
- visual-studio-code - VS Code 键盘快捷键是否有底层逻辑/模式?
- ruby - 法拉第 - 测试连接
- performance - FastReports pascalscript if
- mysql - 如何将列中的结果放在结果的顶部?
- java - 发生了什么以及如何修复:无效的模块名称:“tomcat-embed-jasper-el”不是 Java 标识符
- powershell - 如何格式化 Export-Excel 的输出以便在 PowerShell 中获得彩色标题?
- java - 如何将普通位图转换为单色位图android