Adobe Flex:无法使用XIFF库连接到XMPP服务器

时间:2013-02-05 09:43:18

标签: actionscript xmpp xiff

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

我在我的localhost上安装了eJabberd并使用XMPP客户端(Pandion)连接到它,这很正常......我可以连接到本地jabber服务器。

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

LoginView.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>

Connection.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服务器。只是想知道我可能会出错的地方。

任何帮助都将不胜感激。

谢谢!

1 个答案:

答案 0 :(得分:0)

看起来像跨域政策问题。尝试:

  1. Locate your policy log file首先

  2. 启动SWF

  3. 检查政策文件内容

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

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

    出于调试目的,adding SWF file location do local-trusted sandbox应解决所有问题。