Preben Huybrechts
Preben Huybrechts

Reputation: 6151

SignalR not sending web requests on start

So, We are implementing some messaging system with signalR. We included signalR through the latest version of Nuget. The application is hosted on IIS 7. We have disabled all the URL Rewrite rules.

We are using a hub, see the following code:


    [HubName("messages")]
    public class Messages : Hub
    {
        public void Send(string message)
        {
            Clients.showPopUp(message);
        }
    }

The include files in the view:

<script src="@Url.Content("~/Scripts/jquery-1.7.1.min.js")" type="text/javascript"></script>       
<script src="@Url.Content("~/Scripts/jquery.signalR.js")" type="text/javascript"></script>
<script src="@Url.Content("~/signalr/hubs")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/Messages/Messages.js")" type="text/javascript"></script>

Content of Messages.js:

$(function () {
    var messages = $.connection.messages;

    messages.showPopUp = function (message) {
        console.log("test");
    };

    $.connection.hub.start(function () {
        console.log('connected');
    });
});

Called when a message is submitted:

$.connection.messages.send($('#Body').val());

So what we get: no errors in Google Chrome console, no xhr request what so over for signal.

We have checked if the /signalr/hubs exists and it does, also /signalr/negotiate returns the following json:

{"Url":"/agenda/signalr","ConnectionId":"a4215b26-32f1-4a52-bf6d-4de096298a07","TryWebSockets":false,"WebSocketServerUrl":null,"ProtocolVersion":"1.0"}

When we call send we get the following in the console:

Uncaught SignalR: Connection must be started before data can be sent. Call .start() before .send()

If we debug signalR, we see start was called, but we don't hit the error or success of the jQuery ajax call and there are no xhtml requests what so ever. What are we doing wrong?

No Web requests

Upvotes: 2

Views: 2458

Answers (2)

Preben Huybrechts
Preben Huybrechts

Reputation: 6151

Solution

In jquery.signalR.js change all the

$.ajax(url, {options});

to

$.ajax({ url: url, other options...});

Upvotes: 1

BennyM
BennyM

Reputation: 2856

Try checking out this issue: https://github.com/SignalR/SignalR/issues/328

Upvotes: 2

Related Questions