13

对于Stack Overflow 聊天的 XMPP 界面,我目前正在获取聊天消息的 HTML 并将其转换为有效的 XML,并将其设置为XMPP对象的html子元素。message在我的 Mac OS X jabber 客户端中,这很好用!这意味着当 SO 聊天中的用户发布单框图像时,该图像将显示在我的 XMPP 客户端(OS X 的 Adium)中:

我的心被炸了

但是我刚刚将 Adium 更新到了最新版本,显然他们认为我所做的事情是一个安全漏洞并且违反了 XMPP 规范,并改变了这种行为。他们的理由是 XMPP 不应该泄露你的 IP 地址,而通过 HTTP 获取图像会泄露我的 IP 地址。

所以现在聊天在 XMPP 上是无图像的。如何使图像在 XMPP 上工作?我的 XMPP 组件是否应该下载图像并将它们嵌入到<Message>节中?图像可以通过 XMPP 服务器代理吗?或者这是不可能的?

4

3 回答 3

6

Adium、iChat 和 Pidgin 都支持XEP-0231,它允许您为此目的发送提供的二进制数据,包括图像。基本上,它允许您指定一个唯一标识符作为图像的来源,然后其他客户端可以决定他是否要请求请求中的数据<iq>

我一直在 python 的Twisted中处理这个问题,但遇到了一些挫折。我知道Adium 和 iChat 至少使用它来请求数据。

于 2011-10-07T22:49:04.253 回答
4

尝试将其嵌入数据中: uri,例如<img src="data:image/png;base64,VGhlIGltYWdlIGRhdGEgZ29lcyBoZXJlCg==" alt="some text" />

于 2010-11-16T20:44:06.583 回答
0

只是一个想法...

解析图像 URL,下载图像,将它们放入临时文件夹中,文件名代表原始 URL(文件名可以是原始 URL 的哈希),然后用消息中的原始 URL 替换这些文件 URL?

另一个想法...拥有一个获取真实 URL 的本地服务器?

于 2010-11-17T03:03:04.127 回答