连接到XMPP服务器

时间:2014-04-15 17:30:18

标签: javascript xmpp strophe

所以我一直在尝试对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连接,其他第三方应用程序也可以这样做。我是否需要自己的一些服务器设置来完成这种连接?

1 个答案:

答案 0 :(得分:1)

5223是“旧式SSL”TCP连接的端口,大多数XMPP应用程序使用TCP连接到服务器。但是javascript应用程序不可能(AFAIK)维护TCP连接并使用XMPP BOSH扩展(长轮询HTTP请求),您需要在服务器上使用BOSH连接管理器/扩展(通常在5280端口上)。