iOS XMPP通过HTTP代理聊天

时间:2014-04-16 14:57:53

标签: ios http proxy xmpp

我有一个可以使用2种服务的iPhone应用程序:

  1. 通过http使用REST服务 - 使用AFNetworking
  2. 通过TCP进行XMPP聊天 - 使用XMPPFramework https://github.com/robbiehanson/XMPPFramework
  3. 我的iPhone使用带代理的公司网络,因此我在设置http://qblx.co/1eJ9TwI

    中设置了HTTP代理

    使用此代理设置,对REST服务的所有请求都将通过此代理。 但是,我的应用程序直接连接到聊天服务器,没有代理。

    如何通过代理进行聊天? 我可以看到,XMPPFramework使用GCDAsyncSocket作为传输https://github.com/robbiehanson/CocoaAsyncSocket

    您对如何通过代理设置聊天有任何建议吗?

1 个答案:

答案 0 :(得分:3)

默认情况下,XMPP使用纯 TCP 套接字连接,该连接无法通过 HTTP 代理进行路由。你可以:

  • 如果您的代理支持HTTPS /隧道,请尝试将443端口用于XMPP服务,或将443端口转发到路由器上的默认XMPP服务端口(5222)。
  • 如果您的代理支持SOCKS,请尝试使用ProxyKit,但可能需要修改XMPPFramework代码
  • 您可以尝试将XMPP与HTTP或Websocket传输一起使用,但XMPPFramework不支持它,您可能需要查找/编写不同的库