所以我一直在尝试对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连接,其他第三方应用程序也可以这样做。我是否需要自己的一些服务器设置来完成这种连接?
答案 0 :(得分:1)
5223是“旧式SSL”TCP连接的端口,大多数XMPP应用程序使用TCP连接到服务器。但是javascript应用程序不可能(AFAIK)维护TCP连接并使用XMPP BOSH扩展(长轮询HTTP请求),您需要在服务器上使用BOSH连接管理器/扩展(通常在5280端口上)。