Я использовал чат-приложение 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.