[英]Connecting to an XMPP server
因此,我一直在嘗試閱讀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進行連接,其他第三方應用程序也可以這樣做。 我需要自己的一些服務器設置來完成這種連接嗎?
5223是用於“舊式SSL” TCP連接的端口,大多數XMPP應用程序都使用與服務器的TCP連接。 但是,無法使用javascript應用程序(AFAIK)來維持TCP連接並使用XMPP BOSH擴展(長輪詢HTTP請求),您需要在服務器上使用BOSH連接管理器/擴展名(通常在5280端口上)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.