我正在尝试使用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服务器。只是想知道我可能会出错的地方。
任何帮助都将不胜感激。
谢谢!
答案 0 :(得分:0)
看起来像跨域政策问题。尝试:
启动SWF
检查政策文件内容
另一种做同样事情的方法是打开浏览器网络日志并检查Flash是否正在尝试加载http://localhost/crossdomain.xml
之类的文件。
这个问题有两种通用解决方案:
从与XMPP数据相同的主机提供SWF文件
出于调试目的,adding SWF file location do local-trusted sandbox应解决所有问题。