2013-06-01 13 views
15

Çapraz etki alanında çalışan ancak şansa sahip olmayan süper basit bir hub bağlantısı kurmaya çalışıyorum. Düzinelerce yazı okudum ve bahsettiğim her şeyi yaptım ama hala başarı yok.Etki alanları arası çalışma için bir SignalR hub bağlantısı nasıl alabilirim?

Benim sunucusuna merkez Sunucum MapHubs diyoruz

public class ChatHub : Hub 
{ 
    public void Send(string name, string message) 
    { 
     Clients.All.broadcastMessage(name, message); 
    } 
} 

RouteTable.Routes.MapHubs(new HubConfiguration { EnableCrossDomain = true }); 

Herhangi benim javascript istemci sorunu asla ulaşır ki burada

<!DOCTYPE html> 

<html> 
<head> 
    <meta name="viewport" content="width=device-width" /> 
    <title>Index</title> 
    <script src="~/Scripts/jquery-2.0.1.min.js"></script> 
    <script src="~/Scripts/jquery.signalR-1.1.2.min.js"></script> 
    <script src="/signalr/hubs"></script> 
</head> 
<body> 
    <div class="container"> 
     <input type="text" id="displayname" value="Test" /> 
     <input type="text" id="message" value="I'm here" /> 
     <input type="button" id="sendmessage" value="Send" /> 
    </div> 
    <script type="text/javascript"> 
     $(function() 
     { 
      $.connection.hub.url = 'http://<my url>/'; 
      var chat = $.connection.chatHub; 
      alert(chat); 
      $.connection.hub.start().done(function() 
      { 
       alert("Connection succeeded"); 
      }).fail(function() 
      { 
       alert("Connection failed"); 
      }); 
     }); 
    </script> 
</body> 
</html> 

olduğunu burada burada Bağlantı başarılı oldu veya başarısız oldu ve uyarı (sohbet) çağrısı tanımsız olarak geri döndü.

Ben $ .connection.hub.url hattı

$.connection.hub.url = 'http://<My url>'; 
$.connection.hub.url = 'http://<My url>/'; 
$.connection.hub.url = 'http://<My url>/signalr'; 
$.connection.hub.url = 'http://<My url>/signalr/'; 

için çeşitli kombinasyonları denedim Chrome ve Firebug geliştirici konsolu aynı etki o günü bana hata

Uncaught Error: SignalR: Error loading hubs. Ensure your hubs reference is correct, e.g. <script src='/signalr/hubs'></script>. 

vermek iyi çalışıyor. Bu gerçekten beni delirtmeye başlıyor, bu yüzden herhangi bir yardım takdir edilecektir.

sayesinde Jason

cevap

17

Sunucunuz henüz alanlar arası barındırılan geçerli etki alanından göbekleri almaya çalışıyoruz. Bu nedenle, hub'lar dosyasını geri alamıyor ve aslında çalışmak için bir vekiliniz yok (bu yüzden her şey çalışmıyor).

  1. Manuel hub dosyası oluşturmak ve geçerli etki alanında barındırın: http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client#manualproxy

    Yani iki seçenek var.

  2. Ham hub bağlantı API'sini kullanın ve signalr/hubs dosyasını hiç içermeyin.

Ham hub bağlantısı API'sini nasıl kullanabileceğinizle ilgili bir kod snippet'i: http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client#nogenconnection (ikinci kod snippet'i).

+0

Harika, teşekkürler! Gerçekten manuel vekil yöntemini kullanmayı denedim (2) ve şansım yoktu ama o sırada başka bir şeylerin yanlış olması gerekiyordu. Tekrar denedim ve çalıştım. Şimdi PhoneGap üzerinde çalışmak için ama bu başka bir gün için bir meydan okuma. – Jason

+0

@Jason - phonegap ve signalr ile herhangi bir şans? Gelecek hafta bu bir çatlamak için, bir başkasının işe yaradığını duymak yararlı olacaktır –

+0

@DeeMac - biz proje ile devam etmeden sona erdi (müşteri finansmanı sorunu) bu yüzden daha fazla bir şey yapmadım. SignalR'ın en son çalıştığımdan beri biraz geliştiğini gördüm. Yine de eğlen, oldukça havalı bir teknolojidir. – Jason