Простой пример, когда signalR не работает

Не удалось заставить SignalR работать на моей машине (с IE9). При вводе текста и нажатии кнопки «Отправить» текст не отображается, как предполагалось. Кроме того, я ожидаю, что список будет обновляться из нескольких экземпляров браузера, и этого не происходит. Нет ошибки. Кто-нибудь может здесь помочь?

C#

namespace TestSignalR.Hubs
{
    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Web;

    /// <summary>
    /// Summary description for ChatHub.
    /// </summary>
    public class ChatHub : SignalR.Hubs.Hub
    {
        public void TestMessage(string message)
        {
            Clients.writeMessage(message);
        }
    }
}

ASPX

<input type="text" name="txtInput" id="txtInput" />
<button id="btnSubmit">Submit</button>

<ul id="messages">
</ul>
<script type="text/javascript" src="SignalR/Hubs"></script>
<script type="text/javascript">
    $(document).ready(function (message) {
        var chat = $.connection.chatHub;

        chat.writeMessage = function (message) {
            $("#messages").append("<li>" + message + "</li>");
        };

        $("#btnSubmit").click(function () {
            var text = $("#txtInput").val();
            chat.testMessage(text);
        });

        $.connection.hub.start();
    });

</script>

Master page has the references for the JQuery and SignalR files:-

<script src="Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="Scripts/jquery.signalR-0.5.2.min.js" type="text/javascript"></script>

person user1422578    schedule 11.07.2012    source источник
comment
ничего плохого в коде, работает на моей машине. Единственное отличие jquery 1.7.2. Вы проверили, все ли js-скрипты найдены в IE9?   -  person Wim    schedule 11.07.2012
comment
что jquery-1.6.4.min.js поставляется с Nuget SignalR.   -  person user1422578    schedule 11.07.2012
comment
@Wim, что вы имеете в виду, если все сценарии js находятся в IE9?   -  person user1422578    schedule 11.07.2012
comment
в сценариях инструментов разработчика IE9 вы видите все файлы javascript?   -  person Wim    schedule 11.07.2012


Ответы (2)


Сегодня я работал с той же проблемой.

Сначала вам нужно добавить атрибут к вашему концентратору с именем, как показано ниже:

[HubName("chathub")]
public class ChatHub : SignalR.Hubs.Hub

Следующее, что нужно сделать, это изменить порядок ваших вызовов в javascript. Вам нужно сделать соединение рядом с созданием экземпляра концентратора. Итак, код будет следующим:

$(document).ready(function (message) {
   var chat = $.connection.chatHub;

   $.connection.hub.start();

   chat.writeMessage = function (message) {
      $("#messages").append("<li>" + message + "</li>");
   };

    $("#btnSubmit").click(function () {
        var text = $("#txtInput").val();
        chat.testMessage(text);
    });        
 });

Я надеюсь, что это работает для вас.

person Ignacio Berra    schedule 11.07.2012
comment
Разве это не должно быть chat.client.writeMessage и chat.server.testMessage - person mhu; 25.02.2013

Также установите версию SignalR 1.0 из Nuget. Судя по вашим ссылкам на скрипты, вы используете 0.5.2, а последняя поддерживаемая версия на момент написания этого поста — 1.0. Загрузите Microsoft.AspNet.SignalR из Nuget.

person pranav rastogi    schedule 25.02.2013