XMPP-Пример глава 3 «Профессиональное программирование XMPP с помощью JavaScript и jQuery» не работает

#javascript #jquery #xmpp #strophe

#javascript #jquery #xmpp #strophe

Вопрос:

Я просто новичок в XMPP, и я создаю первый код «ПРИВЕТ». Пожалуйста, не торопитесь, посмотрите на следующий код (.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 («подключен») и bind («отключить»). Поэтому я предполагаю, что код не может быть запущен туда. Я никогда не делал этого раньше, и об этом редко есть документы, поэтому я не знаю, что делать сейчас.

Вопрос: Ребята, не могли бы вы, пожалуйста, взглянуть на это и сказать мне, что было не так? Я сам все еще работаю над его отладкой!

Дополнительная информация: Это то, что находится в моей веб-папке (боюсь, что отсутствуют файлы javascript framework). Все файлы js имеют последнюю версию.

  • index.html
  • Скрипты/

    • jQuery.js
    • jQueryUI.js
    • strophe.js
    • flensed.js
    • flXHR.js
    • flXHR.swf
    • flXHR.vbs
    • swfobject.js
    • updateplayer.swf
    • checkplayer.js
  • css/

    • Не важно…

Вот мой код, пожалуйста, найдите время, чтобы просмотреть его: http://xx3004.kodingen.com/XMPP

Я был бы признателен за любую помощь.

[x]

Комментарии:

1. Вы запускаете этот код внутри с локального веб-сервера?

Ответ №1:

ваш код в порядке, проблема в URL, предоставленном для установления соединения с использованием Strophe.

переменная conn = новая строка.Подключение («http://bosh.metajack.im:5280/xmpp-httpbind «);

Попробуйте найти местоположение сервера, в противном случае установите xmpp-сервер (vysper) локально на вашем компьютере и измените URL как http://localhost:8080/bosh /

Также попытайтесь прокомментировать включение flxhr.

Комментарии:

1. Всем привет. Спасибо за ваш ответ. Я пытался следовать инструкциям в этой книге «Профессиональное программирование XMPP с помощью JavaScript и jQuery», и я почти уверен, что я все правильно закодировал. Я даже тестирую свою учетную запись Jabber на «jwchat.org «, и я могу войти в систему. Итак, я предполагаю, что проблема в сервере? Я бы хотел, чтобы мой проект работал онлайн, поэтому не могли бы вы порекомендовать мне сервер для приложений реального времени, и он отлично работает? я полагаю, что bosh.metajack.im:5280/xmpp-httpbind просто не работает. Я попробую Apache Vysper. Но, пожалуйста, помогите мне сделать это как можно чаще онлайн. Еще раз спасибо. [x]

2. @priya у меня есть определенные сомнения по поводу «включения flxhr», вы предлагаете прокомментировать включение flxhr, можете ли вы сказать мне, в чем причины, я столкнулся с той же проблемой, хотя я использовал локальный сервер «localhost: 5280 / httpbind», когда я закомментировал включение flxhr, все начало работать нормально, согласно книге «Профессиональное программирование XMPP» flxhr.js и его подключение к strophe используется для выполнения кроссплатформенных вызовов или для использования прокси-серверов!!!!!! итак, каковы будут возможные причины??

Ответ №2:

Если вы используете 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/"