использование SignalR с документом onload вместо jquery onload - PullRequest
1 голос
/ 07 февраля 2012

Я использовал чат-приложение signalR (как описано в этом руководстве http://sergiotapia.com/2011/09/signalr-with-mvc3-chat-app-build-asynchronous-real-time-persistant-connection-websites/) на отдельном тестовом сайте, и все это прекрасно работает.

Я сейчас пытаюсь включить его в свойпроект большего размера.

Теперь, к сожалению, в моем более крупном проекте определена функция загрузки тела, поэтому я не использую стандартный синтаксис jquery $ (function () {}); для выполнения чего-либо при загрузке страницы.До сих пор это было слишком большой проблемой, большинство плагинов и скриптов jquery выполняются в функции, вызываемой onload моего тела, и это нормально.

Но по какой-то причине мой код signalR просто не выполняется.
Это точно такой же код, как указано выше, только он вызывается при загрузке моего тела.
Страница загружается, отправляет сообщение в / signalr /gotiate (которое возвращает URL и clientID)

Inмое примерное приложение, которое работает, затем выполняет непрерывную публикацию в / signalr / connect
В моем другом приложении оно просто выполняет один переход на страницу, на которой я сейчас нахожусь.
Это не делает публикацию для подключения.

Есть ли способ, чтобы вызвать это вручную?Вот источник страницы не работает.Обратите внимание, что причина, по которой я не ссылаюсь на сам JQuery, заключается в том, что он загружен в мою главную страницу.JQuery присутствует.

<script src="/public/javascript/jquery.signalR.min.js">
<script src="/public/javascript/json2.js">
<script type="text/javascript" src="/signalr/hubs">

<div>
    <input type="text" id="msg" />
    <input type="button" id="broadcast" />
    <ul id="messages"></ul>
</div>

<script type="text/javascript">
function ExecuteOnLoad() {
// Proxy created on the fly
var chat = $.connection.chat;
// Declare a function on the chat hub so the server can invoke it
chat.addMessage = function (message) {
$('#messages').append('<li>' + message + '</li>');
};
$("#broadcast").click(function () {
// Call the chat method on the server
chat.send($('#msg').val());
});
// Start the connection
$.connection.hub.start();
}
</script>

РЕДАКТИРОВАТЬ: вот центр чата

public class Chat : SignalR.Hubs.Hub
    {
        public void Send(string message)
        {
            //Call the addMessage method on all clients.
            Clients.addMessage(message);
        }
    }

ДВОЙНОЕ РЕДАКТИРОВАНИЕ: хорошо, я сделал стандартную HTML-страницу в моем проекте MVC и подключилСобытие onload снова и все работает нормально.Кажется, проблема в том, что опрос не работает, когда я вызываю

$.connection.hub.start(); 

, вместо этого он выполняет переход к текущему URL и возвращает страницу снова в запросе get.

1 Ответ

3 голосов
/ 07 февраля 2012

Проблема не имеет ничего общего с заданным мной вопросом.
Я думал, что это может быть связано с функцией onload, но это не так.
Проблема была в том, что на моей странице была ссылка на плагин Jquery.Validate.
Я использовал версию 1.7, я обновил до 1.9 плагина, и он работал нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...