2013-06-01 12 views
15

私はクロスドメインで動作しているが、運がない超シンプルなハブ接続を取得しようとしています。私は何十もの記事を読んだが、言及されたすべてをやったが、まだ成功していない。クロスドメインで動作するSignalRハブ接続を取得するにはどうすればよいですか?

マイサーバーハブがここ

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

マイサーバーMapHubs呼び出しがここに

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

ですされているすべての私のjavascriptのクライアントは、ここでは

<!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> 

問題は、それが到達したことがないということです接続の成功または失敗のアラートとアラート(チャット)コールは未定義を返します。

は、私は、$ .connection.hub.urlライン

$.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/'; 

のためのいくつかの組み合わせを試したChromeとFirebugの中デベロッパーコンソールは、同じドメイン、それには私にエラー

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

を与えます正常に動作します。これは本当に私を夢中にさせてくれたので、どんな助けもありがたいです。

おかげで、 ジェイソン

答えて

17

サーバーにはまだクロスドメインをホストされているあなたは、現在のドメインからハブを取得しようとしています。したがって、ハブファイルを取得することができず、実際には動作するプロキシがない(すべてが機能しない理由です)。

だから、2つのオプションがあります。

  1. 手動でハブファイルを作成し、現在のドメインにホスト:http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client#manualproxyを。
  2. 生ハブ接続APIを使用し、signalr/hubsファイルをまったく含めないでください。

生ハブ接続APIを使用する方法のコードスニペットは、http://www.asp.net/signalr/overview/hubs-api/hubs-api-guide-javascript-client#nogenconnection(2番目のコードスニペット)です。

+0

恐縮です。私は実際に手動プロキシメソッド(2)を使って試してみましたが、運はありませんでしたが、当時は別の何かが間違っていたに違いありません。私はもう一度試して、それを働かせました。今PhoneGapで作業するには、それは別の日の課題です。 – Jason

+0

@ Jason - 携帯電話と信号機があれば運がいいですか?来週にこれを解読しようとすると、他の誰かがそれを働かせたと聞くのに役立つでしょう。 –

+0

@DeeMac - 私たちはプロジェクト(クライアント資金調達の問題)をやっていないので、もうこれ以上はやっていません。 SignalRは私が最後に作業して以来かなり進化してきました。しかし、それは非常にクールな技術です。 – Jason

関連する問題