连接到 XMPP 服务器
Posted
技术标签:
【中文标题】连接到 XMPP 服务器【英文标题】:Connecting to an XMPP server 【发布时间】:2014-04-15 17:30:17 【问题描述】:所以我一直在尝试阅读 XMPP 并决定尝试使用 Strophe JS 库。我尝试使用我认为合适的域、用户名和密码连接到我知道的 XMPP 服务器(地址是 http://chat.na1.lol.riotgames.com:5223
),当我尝试连接时(仅在本地运行 javascript),以下内容被发送到服务器:
<body rid='3367062472' xmlns='http://jabber.org/protocol/httpbind' to='pvp.net' xml:lang='en' wait='60' hold='1' content='text/xml; charset=utf-8' ver='1.6' xmpp:version='1.0' xmlns:xmpp='urn:xmpp:xbosh'/>
但我在 Chrome 中收到以下错误:
XMLHttpRequest cannot load https://chat.na1.lol.riotgames.com:5223/. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'null' is therefore not allowed access.
在 FireFox 中,我看到了发送内容的控制台输出,但没有看到关于 Access-Control-Allow-Origin
标头的错误。
以下是尝试连接的简单 javascript:
var SERVER = "http://chat.na1.lol.riotgames.com:5223",
username = "name@domain.net",
password = "AIR_password",
connection;
function log(msg)
console.log(msg);
function rawInput(data)
log('RECV: ' + data);
function rawOutput(data)
log('SENT: ' + data);
function onConnect(status)
if (status == Strophe.Status.CONNECTING)
log('Strophe is connecting.');
else if (status == Strophe.Status.CONNFAIL)
log('Strophe failed to connect.');
else if (status == Strophe.Status.DISCONNECTING)
log('Strophe is disconnecting.');
else if (status == Strophe.Status.DISCONNECTED)
log('Strophe is disconnected.');
else if (status == Strophe.Status.CONNECTED)
log('Strophe is connected.');
connection.disconnect();
$(document).ready(function ()
connection = new Strophe.Connection(SERVER);
connection.rawInput = rawInput;
connection.rawOutput = rawOutput;
connection.connect(username, password, onConnect);
);
我是否遇到了跨域问题?我尝试连接的方式有问题吗?
我知道可以连接到该服务器,因为可以通过 Pidgin 进行连接,并且其他 3rd 方应用程序也可以这样做。我需要自己设置一些服务器来完成这种连接吗?
【问题讨论】:
【参考方案1】:5223 是“老式 SSL”TCP 连接的端口,大多数 XMPP 应用程序使用 TCP 连接到服务器。但是 javascript 应用程序不可能 (AFAIK) 来维持 TCP 连接并使用 XMPP BOSH 扩展(长轮询 HTTP 请求),您需要在服务器上安装 BOSH 连接管理器/扩展(通常在 5280 端口上)。
【讨论】:
以上是关于连接到 XMPP 服务器的主要内容,如果未能解决你的问题,请参考以下文章