如何获取已连接WebSocket客户端的IP地址?

如何获取已连接WebSocket客户端的IP地址?,websocket,abap,Websocket,Abap,我目前正在处理ABAP推送通道服务器到WebSocket客户端的连接,我需要客户端的IP地址,以确定此客户端是否是我要向其发送消息的客户端。在我的场景中,可能有多个WebSocket连接 现在有了ssi_websocket_表表和ssi_websocket_表行,其中包含字段caller_ip,但这会给我连接到的网络的DNS服务器的ip地址,并且我期望我的本地PC的ip地址,因为websocket客户端正在这台机器上运行 是否有其他方法可以从ABAP中的活动WebSocket连接获取客户端IP地

我目前正在处理ABAP推送通道服务器到WebSocket客户端的连接,我需要客户端的IP地址,以确定此客户端是否是我要向其发送消息的客户端。在我的场景中,可能有多个WebSocket连接

现在有了
ssi_websocket_表
表和
ssi_websocket_表
行,其中包含字段
caller_ip
,但这会给我连接到的网络的DNS服务器的ip地址,并且我期望我的本地PC的ip地址,因为websocket客户端正在这台机器上运行

是否有其他方法可以从ABAP中的活动WebSocket连接获取客户端IP地址


注意:查看所有的表项,当使用不同的服务器配置时,它显示了正确的IP,一旦我知道原因,我将向您报告。

正如vwegert所指出的,使用IP来区分WebSocket是没有意义的,我认为最好是为每个WebSocket连接使用一个ID

您可以从WebSocket服务器上下文获取IP,该上下文显然从连接的HTTP握手开始获取IP头:

DATA(lo_context) = i_context. " IF_APC_WSP_SERVER_CONTEXT type
DATA(lo_request) = lo_context->get_initial_request( ).

" initialize G_CONTEXT_ID_FIELD for PCP_SET_CONTEXT_FIELDS
DATA(lv_id) = lo_request->get_header_field( if_http_header_fields_sap=>remote_addr ).

该示例取自SAP标准类“消息上的
方法”。按IP地址识别客户端是一个非常糟糕的想法。不保证稳定或唯一,容易欺骗。这些是websocket连接,客户端首先启动连接并进行身份验证,因此任何活动的websocket连接都是有效的安全客户端-服务器连接,但是我仍然需要知道哪个ip属于哪个设备id我可以将消息发送回它的目标ip如果你有两个192.168.42.42的设备通过同一个网关从不同的网络发送过来会发生什么?你将如何区分它们?你是对的,那么使用IP根本没有意义。我将选择websocket ID和设备ID来代替。@MADforFUNandHappy我将您的问题解决方案放入单独的答案中,以便人们可以找到它