如何在Google App Engine中使用XMPP协议获取聊天消息发件人的IP地址?

时间:2013-01-24 07:35:28

标签: google-app-engine ip xmpp chat

我正在开发一个可以回复用户聊天消息的应用。我需要知道聊天消息发送者的IP地址。我在谷歌应用引擎上做我的应用程序,并使用XMPP协议进行聊天。如何使用XMPP协议检测聊天消息发送方的IP地址?

2 个答案:

答案 0 :(得分:1)

只有XMPP服务器知道IP地址。如果您控制XMPP服务器,您可以编写一个扩展名,以某种方式在消息中包含IP地址(或检查是否已有)。

答案 1 :(得分:0)

How to get my public IP from XMPP bind message?

http://xmpp.org/extensions/xep-0279.html


首先,客户端向其服务器发送IQ-get请求。

示例1。客户端从服务器请求其IP地址

<iq from='romeo@montague.lit/orchard'
    id='ik2s7159'
    type='get'>
  <address xmlns='urn:xmpp:sic:1'/>
</iq>

然后,服务器返回一个IQ结果,其中包含一个元素,该元素包含一个指定客户端外部IP地址的元素,以及一个指定客户端外部端口的元素。

示例2。服务器返回IP地址和端口

<iq id='ik2s7159'
    to='romeo@montague.lit/orchard'
    type='result'>
  <address xmlns='urn:xmpp:sic:1'>
    <ip>192.168.4.1</ip>
    <port>12345</port>
</iq>

请注意,IP地址可以是IPv4或IPv6。

示例3。服务器返回IPv6地址

<iq id='ik2s7159'
    to='romeo@montague.lit/orchard'
    type='result'>
  <address xmlns='urn:xmpp:sic:1'>
    <ip>2001:db8::9:1</ip>
    <port>12345</port>
  </address>
</iq>