2

我只是 XMPP 的新手,我正在制作第一个“HELLO”代码。请花点时间查看以下代码(.zip 在本主题的末尾):

<html>

<head>
<title>Hello - Chapter 3</title>
<style type="text/css">
body {
    font-family: Helvetica;
}

h1 {
    text-align: center;
}

.hidden {
    display: none;
}

#log {
    padding: 10px;
}
</style>
<script language="javascript" type="text/javascript" src="scripts/jQuery.js"></script>
<script language="javascript" type="text/javascript" src="scripts/jQueryUI.js"></script>
<script language="javascript" type="text/javascript" src="scripts/strophe.js"></script>
<script language="javascript" type="text/javascript" src="scripts/flXHR.js"></script>
<script language="javascript" type="text/javascript" src="scripts/strophe.flxhr.js"></script>
<link rel="stylesheet" href="hello.css"></link>
<script language="javascript" type="text/javascript">
var Hello = {
        connection: null,
        log: function(msg) {
        $("#log").append("<p>" + msg + "</p>");
        }
    };

$(document).ready(function() {
    $("#login_dialog").dialog({
        autoOpen: true,
        draggable: false,
        modal: true,
        title: "Connect to XMPP",
        buttons: {
            "Connect": function() {
                $(document).trigger("connect", {
                    jid: $("#jid").val(),
                    password: $("#password").val()
                });
                $("#password").val("");
                $(this).dialog("close");
            }
        }
    });

    $(document).bind("connect", function(ev, data) {
        var conn = new Strophe.Connection("http://bosh.metajack.im:5280/xmpp-httpbind");
        conn.connect(data.jid, data.password, function(status) {
            if (status === Strophe.Status.CONNECTED) {
                $(document).trigger("connected");
            } else if (status === Strophe.Status.DISCONNECTED) {
                $(document).trigger("disconnected");
            }
        });
        Hello.connection = conn;
    });

    $(document).bind("connected", function() {
        // Inform the user
        Hello.log("Connection established");
    });

    $(document).bind("disconnected", function() {
        Hello.log("Connection terminated.");
        // Remove dead connection object
        Hello.connection = null;
    });
});
</script>
</head>


<body>
<h1>Hello</h1>
<div id="log"></div>

<!-- Login dialog -->
<div id="login_dialog" class="hidden">
<label>JID:</label><input type="text" id="jid">
<label>Pwd:</label><input type="password" id="password">
</div>

</body>

</html>

根据文档和代码,它必须说“连接已建立”或“连接终止”。但事实并非如此。我试着把alert("It runs to here!");每一行代码都放进去,它仍然是 alert()。当我将它放入 bind("connected") 和 bind("disconnect") 时,它不再发出警报。所以我猜代码不能运行到那里。我以前从来没有做过,而且很少有这方面的文件,所以我现在不知道该怎么办。

问题:请你们看看它,告诉我哪里出了问题?我自己还在调试它!

额外信息:这些是我的 web 文件夹中的内容(我害怕丢失 javascript 框架文件)。所有 js 文件都是最新版本。

  • 索引.html
  • 脚本/

    • jQuery.js
    • jQueryUI.js
    • strophe.js
    • flensed.js
    • flXHR.js
    • flXHR.swf
    • flXHR.vbs
    • swfobject.js
    • 更新播放器.swf
    • 检查播放器.js
  • css/

    • 不重要...

这是我的代码,请花点时间查看:http: //xx3004.kodingen.com/XMPP

我将不胜感激任何帮助。

[X]

4

2 回答 2

2

您的代码没问题,问题出在提供的使用 Strophe 进行连接的 URL 中。

var conn = new Strophe.Connection("http://bosh.metajack.im:5280/xmpp-httpbind");

尝试找到服务器的位置,否则在您的机器上本地安装 xmpp 服务器(vysper),并将 URL 更改为http://localhost:8080/bosh/

还尝试评论 flxhr 包含。

于 2011-07-08T10:01:59.167 回答
1

如果您在本地主机上运行Openfire,请确保

bosh_service_url =  'http://127.0.0.1:7070/http-bind/'

IE

var conn = new Strophe.Connection("http://127.0.0.1:7070/http-bind/");

如果您在本地主机上运行ejabberd 请确保

bosh_service_url = "http://127.0.0.1:5222/http-bind/"
于 2016-04-22T19:38:47.377 回答