2013-06-20 15 views
5

Ich habe eine Konsolenanwendung, die der SignalR-Server ist, auf meinem PC.Es ist möglich, signalR client web einen Server auf einem anderen PC zu verbinden?

Ich habe eine HTML-Seite, die ein SignalR-Client im Internet ist. Aber ich versuche, den Server zu verbinden, aber ich habe eine 400 fehlerhafte Anfrage. Wenn der Server heruntergefahren ist, habe ich eine andere Antwort.

Es ist möglich oder nicht der SignalR-Client, einen Server auf einem PC zu verbinden?

(Sorry für mein Englisch)

Meine Seite

<input type="text" id="msg" value=" " /> 
    <input type="button" id="send" value="send" /> 
    <ul id="message"> 
    </ul> 
    <script src="Scripts/jquery-1.6.4.min.js"></script> 
    <script src="Scripts/jquery.signalR-1.1.2.min.js"></script> 
    <script> 
     $(function() { 
      jQuery.support.cors = true; 
      // Open a connection to the remote server 
      var connection = $.hubConnection('http://MyIpAddress:8080'); 
      var chat = connection.createHubProxy('chat'); 

      chat.on('send', function (message) { 
       $('#message').append('<li>' + message + '</li>'); 
      }); 

      // Turn logging on so we can see the calls in the browser console 
      connection.logging = true; 

      connection.start().done(function() { 
       $('#send').click(function() { 
        chat.invoke('send', $('#msg').val()); 
       }); 
      }); 
     }); 
    </script> 

Mein Server Code

using Microsoft.Owin.Hosting; 
using System; 
using System.IO; 
using System.Net; 
using System.Net.Sockets; 

//Install-Package Microsoft.Owin.Hosting -pre 
//Install-Package Microsoft.Owin.Host.HttpListener -pre 

namespace TestServer 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      LocalIPAddress(); 
      string url = "http://localhost:8080"; 

      using (WebApplication.Start<Startup>(url)) 
      { 
       Console.WriteLine("Server running on {0}", url); 
       Console.ReadLine(); 
      } 
     } 
    } 
} 

Startup.cs

using Microsoft.AspNet.SignalR; 
using Owin; 

namespace TestServer 
{ 
    public class Startup 
    { 
     // This method name is important 
     public void Configuration(IAppBuilder app) 
     { 
      var config = new HubConfiguration 
      { 
       EnableCrossDomain = true 
      }; 

      app.MapHubs(config); 
     } 
    } 
} 

Chat.cs

using Microsoft.AspNet.SignalR; 
using System; 
using System.Threading.Tasks; 

namespace TestServer.Hubs 
{ 
    public class Chat : Hub 
    { 
     public override Task OnConnected() 
     { 
      Console.WriteLine("OnConnected " + Context.ConnectionId); 
      return base.OnConnected(); 
     } 

     public void Send(string message) 
     { 
      Console.WriteLine(string.Format("Receive: {0} by {1} ", message, Context.ConnectionId)); 
      Clients.All.send(message); 
     }  
    } 
} 
+1

Zeigen Sie immer Ihren Code an. Es ist schwer, die Frage zu beantworten, die Annahmen darüber machen muss, was Sie "getan" haben könnten. – davidfowl

+0

Ihre Dokumente schlagen vor, dass Sie 'jQuery.support.cors = true;' http://www.asp.net/signalr/overview/guide-to-the-api/hubs-api-guide-javascript-client#configureconnection (müssen Sie leicht nach oben scrollen, wo der Link Sie auf die Seite bringt) – Jon

Antwort

9

Was dies als die erste Zeile in der JS-Initialisierung:

.connection.hub.url $ = "URL";

+0

So einfach ist das! Danke vielmals. –

+0

'$ .connection.hub.url = 'http: // localhost: 1234/signalr';' Ich musste "/ signalr" hinzufügen, und es funktioniert einwandfrei. Vielen Dank! – KoalaBear

1

Ich hatte gerade das gleiche Problem, und obwohl es einige Zeit vergangen ist, seit der Frage veröffentlicht wurde dies, wie ich es gelöst:

ich im Server-Code aus der URL geändert:

string url = "http://localhost:8080"; 

zu:

string url = "http://*:8080"; 

oder:

string url = "http://+:8080"; 

Das änderte den Bindungsbereich, aber für mich hat es ein paar Probleme gelöst.