XMPP - 示例第 3 章“使用 JavaScript 和 jQuery 进行专业 XMPP 编程”不起作用
Posted
技术标签:
【中文标题】XMPP - 示例第 3 章“使用 JavaScript 和 jQuery 进行专业 XMPP 编程”不起作用【英文标题】:XMPP - Example chapter 3 "Professional XMPP Programming with JavaScript and jQuery" doens't work 【发布时间】:2011-05-15 20:51:03 【问题描述】:我是 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文件都是最新版本。
index.html脚本/
jQuery.js jQueryUI.js strophe.js flensed.js flXHR.js flXHR.swf flXHR.vbs swfobject.js updateplayer.swf checkplayer.jscss/
不重要...这是我的代码,请花点时间查看:http://xx3004.kodingen.com/XMPP
如果有任何帮助,我将不胜感激。
[x]
【问题讨论】:
你是从本地网络服务器运行这段代码吗? 【参考方案1】:你的代码没问题, 问题出在为使用 Strophe 建立连接所提供的 URL 中。
var conn = new Strophe.Connection("http://bosh.metajack.im:5280/xmpp-httpbind");
尝试找到服务器的位置,否则在你的机器上本地安装一个xmpp服务器(vysper),并将URL更改为http://localhost:8080/bosh/
也尝试评论 flxhr 包含。
【讨论】:
您好。感谢您的回复。我试图按照这本书“使用 JavaScript 和 jQuery 进行专业 XMPP 编程”中的说明进行操作,并且我很确定我正确地编写了所有代码。我什至在“jwchat.org”测试我的 Jabber 帐户,我可以登录。所以我猜问题出在服务器上?我希望我的项目能够在线工作,所以你能推荐我一个用于实时应用程序的服务器并且它工作正常吗? bosh.metajack.im:5280/xmpp-httpbind 只是不起作用,我想。我将尝试 Apache Vysper。但请帮助我尽可能使其在线。再次感谢。 [x] @priya 我对“flxhr 包含”有一个特别的疑问,你建议注释掉 flxhr 包含,你能告诉我背后的原因是什么,虽然我使用的是本地,但我遇到了同样的问题服务器“localhost:5280/httpbind”,当我注释掉 flxhr 包含时,一切都开始正常工作,根据“专业 XMPP 编程”一书,flxhr.js 及其 strophe 插件用于进行跨平台调用,或者必须使用代理! !!!!!那么这里可能的原因是什么??【参考方案2】:如果您在 localhost 上运行 Openfire,请确保
bosh_service_url = 'http://127.0.0.1:7070/http-bind/'
即
var conn = new Strophe.Connection("http://127.0.0.1:7070/http-bind/");
如果您在 localhost 上运行 ejabberd,请确保
bosh_service_url = "http://127.0.0.1:5222/http-bind/"
【讨论】:
以上是关于XMPP - 示例第 3 章“使用 JavaScript 和 jQuery 进行专业 XMPP 编程”不起作用的主要内容,如果未能解决你的问题,请参考以下文章
python 生成ID3决策树的示例代码。参考:机器学习在行动第3章