1

我正在尝试使用XIFF 库连接到我的本地 XMPP 服务器,但是我无法这样做。

我在我的本地主机上安装了eJabberd并使用 XMPP 客户端(Pandion)连接到它,这工作正常......我能够连接到本地 jabber 服务器。

接下来,我尝试使用以下代码连接到 XMPP 服务器:

登录视图.mxml

<?xml version="1.0" encoding="utf-8"?>
<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
        xmlns:s="library://ns.adobe.com/flex/spark" title="Login">
    <s:layout>
        <s:FormLayout/>
    </s:layout>
    <fx:Declarations>
        <!-- Place non-visual elements (e.g., services, value objects) here -->
    </fx:Declarations>
    <fx:Script source="connection/Connection.as"/>
    <s:Spacer/>
    <s:Label text="Username"/>
    <s:TextInput id="txtUsername" width="200"/>
    <s:Spacer/>
    <s:Label text="Password"/>
    <s:TextInput id="txtPassword" width="200" displayAsPassword="true"/>
    <s:Button id="btnLogin" label="Login" click="login(txtUsername.text, txtPassword.text)" mouseUp="navigator.pushView(HomeView)"/>
</s:View>

连接.as:

import org.igniterealtime.xiff.conference.Room;
import org.igniterealtime.xiff.core.UnescapedJID;
import org.igniterealtime.xiff.core.XMPPConnection;
import org.igniterealtime.xiff.events.LoginEvent;

private var con:XMPPConnection;
private var room:Room;

private function login (username:String, password:String): void {
    con = new XMPPConnection ();
    con.username = username + "@mydomain";
    con.password = password;
    con.server = "localhost";
    con.port = 5222;
    con.connect (0);
}

但是,我无法使用上面的 ActionScript 代码连接到 XMPP 服务器。只是想知道我可能哪里出错了。

任何帮助,将不胜感激。

谢谢!

4

1 回答 1

0

看起来像一个跨域策略问题。尝试:

  1. 首先找到您的策略日志文件

  2. 启动您的 SWF

  3. 检查策略文件内容

另一种做同样事情的方法是打开浏览器网络日志并检查 Flash 是否正在尝试加载类似http://localhost/crossdomain.xml.

这个问题有两种通用的解决方案:

出于调试目的,添加 SWF 文件位置做本地受信任的沙箱应该可以解决所有问题。

于 2013-04-30T07:17:25.823 回答