Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to use SignalR with cross domain

I am trying to use SignalR with cross domain but i am getting error message when calling start function. Error message is "Uncaught TypeError: Cannot call method 'start' of undefined "

I am using code Server side:

[assembly: OwinStartup(typeof(SignalRChat.Startup))]

    namespace SignalRChat
    {
        public class Startup
        {
            public void Configuration(IAppBuilder app)
            {
                app.Map("/signalr", map =>
                {              
                    map.UseCors(CorsOptions.AllowAll);
                    var hubConfiguration = new HubConfiguration
                    {                   
                       EnableJSONP = true
                    };               
                    map.RunSignalR(hubConfiguration);
                });
            }
        }
    }

Client side code.

 <!DOCTYPE html>
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
        <title></title>
        <script src="/Scripts/jquery-1.6.4.min.js"></script>   
        <script src="/Scripts/jquery.signalR-1.1.4.min.js"></script>
    </head>
    <body>
       <div></div>
       <script type="text/javascript">
        var connection = $.connection.hub.url ='http://localhost:9370/signalr';      
        connection.hub.start()
          .done(function () {
              alert('Now connected, connection ID=' + connection.id);
          });
      </script>
      </body>
      </html>
like image 204
yogesh singh Avatar asked Jan 30 '14 06:01

yogesh singh


People also ask

Does SignalR require WebSockets?

SignalR takes advantage of WebSocket, an HTML5 API that enables bi-directional communication between the browser and server. SignalR will use WebSockets under the covers when it's available, and gracefully fall back to other techniques and technologies when it isn't, while the application code remains the same.

Is SignalR two way communication?

SignalR uses Web Sockets and the HTML5 API that helps in bidirectional communication. It also provides an API for server-to-client Remote Procedure Calls (RPC) call, it may be something new for you because most of the time we use a request and response model.

How many concurrent connections can SignalR handle?

IIS on client operating systems has a limit of 10 concurrent connections. SignalR's connections are: Transient and frequently re-established. Not disposed immediately when no longer used.

Can you use SignalR with angular?

Microsoft's @aspnet/signalr package makes it possible to leverage both Azure and Angular to create applications that utilize SignalR.


1 Answers

There are problems with the initialization and start of your Signalr connection, also declare a proxy to reference the hub. See below example:

<script src="/Scripts/jquery-1.6.4.min.js"></script>   
<script src="/Scripts/jquery.signalR-1.1.4.min.js"></script>
<script src="http://localhost:9370/signalr/hubs"></script>

 <script type="text/javascript">
    $.connection.hub.url ='http://localhost:9370/signalr';
    var yourHubProxy = $.connection.YourHubName;

    //Do something here with yourHubProxy

    $.connection.hub.start().done(function () {
        alert('Now connected, connection ID=' + $.connection.hub.id);
     });
 </script>

Another thing, I'm not sure why you're using different versions of SignalR in your server side and client side. To me you had SignalR 2.x on your server side and SignalR 1.1.4 on your cient side.

Take a look at the following link, it's good an example about SignalR with cross domain. http://damienbod.wordpress.com/2013/11/01/signalr-messaging-with-console-server-and-client-web-client-wpf-client/

like image 135
Lin Avatar answered Sep 19 '22 21:09

Lin