Простой чат SignalR

Я следил за документацией по адресу https://github.com/SignalR/SignalR/wiki/QuickStart-Hubs, чтобы создать простое приложение для чата с помощью SignalR Hubs.

Я не могу заставить его работать и не понимаю, что делаю не так?

Я получаю следующую ошибку:

SignalR: перед отправкой данных необходимо установить соединение. Вызов .start () перед .send ()

Класс концентратора:

public class Chat : Hub
{
    public void Send(string message)
    {
        Clients.addMessage(message);
    }
}

Клиент:

<head runat="server">
    <title></title>
    <script src="Scripts/jquery-1.6.4.min.js" type="text/javascript"></script>
    <script src="Scripts/jquery.signalR.min.js" type="text/javascript"></script>
    <script src="signalr/hubs" type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            // 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())
            .done(function () {
                console.log('Success!');
            })
            .fail(function (e) {
                console.warn(e);
            });
            });

            // Start the connection
        $.connection.hub.start();


        });
    </script>
</head>
<body>
    <div>
        <input type="text" id="msg" />
        <input type="button" id="broadcast" value="broadcast" />
        <ul id="messages">
        </ul>
    </div>
</body>

Пакеты:

<packages>
  <package id="Newtonsoft.Json" version="4.0.8" />
  <package id="SignalR.Server" version="0.4.0.0" />
  <package id="Microsoft.Web.Infrastructure" version="1.0.0.0" />
  <package id="SignalR.Hosting.AspNet" version="0.4.0.0" />
  <package id="jQuery" version="1.6.4" />
  <package id="SignalR.Js" version="0.4.0.1" />
  <package id="SignalR" version="0.4.0" />
  <package id="jQuery.Color" version="1.0" />
</packages>

person sarah    schedule 25.04.2012    source источник


Ответы (1)


Вы искали в инструментах разработчика своего браузера, нет ли ошибок?

Возможно, SignalR не может запуститься на клиенте из-за получения ошибки (например, 500) при попытке подключения к серверу.

person Dan Rigby    schedule 25.04.2012
comment
Да, я отлаживаю IE9 с помощью инструментов разработчика. Единственная ошибка, которую я получаю, - это когда я нажимаю кнопку #Broadcast и пытаюсь вызвать chat.send - person sarah; 25.04.2012
comment
Только что прошел еще одну проверку, я получаю код состояния 500 для URL / signalr /gotiate - person sarah; 25.04.2012
comment
@samandmoore, SignalR: перед отправкой данных необходимо запустить соединение. Вызов .start () перед .send () - person sarah; 25.04.2012
comment
@sarah ты сделал новый Project или новый Website? Это может не работать как Website. Я только что создал новый Project с помощью указанной выше пасты, и он отлично работает. - person samandmoore; 25.04.2012
comment
@samandmoore да, я создаю проект, пробовал как mvc, так и веб-формы. Ошибка сервера, которую я получаю для URL / signalr /gotiate: Не удалось загрузить файл или сборку Newtonsoft.Json, Version = 4.0.7.0, Culture = нейтральный, PublicKeyToken = 30ad4fe6b2a6aeed или одну из ее зависимостей. Nuget устанавливает Newtonsoft.Json version = 4.0.8, но SignalR ищет версию 4.0.7.0. Странный... - person sarah; 25.04.2012
comment
Не странно, ожидалось. Обновите свою версию nuget, и она будет работать нормально. Поскольку вы уже сломаны, вы можете запустить команду Add-BindingRedirect из консоли диспетчера пакетов. - person davidfowl; 25.04.2012