0

私が達成しようとしているのは、SignalRを使用してWebサイトでホストされている特定のハブに接続してメッセージを送信できるコンソールアプリです。

Webサイトの「チャット」ハブに接続しようとするコンソールアプリがあります。コンソールは接続を試みてからメッセージを送信して閉じます。

    static void Main(string[] args)
    {
        var connection = new HubConnection("http://mysite:101/");
        IHubProxy myHub = connection.CreateProxy("Chat");


        connection.Start().ContinueWith(task =>
        {

            if (task.IsFaulted)
            {
                Console.WriteLine("There was an error opening the connection:{0}", task.Exception.GetBaseException());
            }
            else
            {

                Console.WriteLine("Client Connected");
            }

        }).Wait();

        myHub.Invoke("Send", "Console App is Online!. ").ContinueWith(task =>
        {
            if (task.IsFaulted)
            {
                Console.WriteLine("There was an error calling send: {0}", task.Exception.GetBaseException());
                Console.WriteLine(task.Status.ToString());
            }
            else
            {
                Console.WriteLine("Send Complete.");
            }
        }).Wait();

すべてがローカルで正常に機能します(同じアプリドメインになると思います)。

私のaspハブは、wikihttps://github.com/SignalR/SignalR/wiki/のチャットの例に基づいています

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

     namespace HubSignalrTest
     {

   //[HubName("Hubtest")]
   public class Chat : Hub , IDisconnect , IConnected
   {

    public void Send(string message)
    {
        // Call the addMessage method on all clients
        Clients.addMessage(message);
    }

Jscriptも例とほとんど同じです。

    <script type="text/javascript" src="Scripts/jquery-1.7.2.js"></script>
 <script type="text/javascript" src="Scripts/jquery.signalR-0.5.1.js"></script>

<script src='<%= ResolveClientUrl("~/signalr/hubs") %>'> type="text/javascript">   </script>
<script type="text/javascript">

  jQuery.support.cors = true;

  $(function () {
      // Proxy created on the fly
      var chat = $.connection.chat;

      // Declare a function on the chat hub so the server can invoke it
      chat.addMessage = function (message) {
          $('#messages').append('<li>' + message + '</li>');
      };



      $("#broadcast").click(function () {
          // Call the chat method on the server
          chat.send($('#msg').val())
              .done(function () {
                  console.log('Success!');
              })
              .fail(function (e) {
                  console.warn(e);
              });
      });

      // Start the connection
      $.connection.hub.start();
  });

jQuery.support.cors=true;を設定してみました。ハブ名を省略または追加しました。同じサーバーでコンソールアプリを正しい設定で実行することを調査しましたが(まだハブに接続されていません)、ファイアウォールの問題ではないようです。誰かが同様のプロジェクトで運が良かったか、私が間違っていることを知っていますか?SignalRがもたらす多くのアイデアを拡張するために、この基本的なコミュニケーションを実現したいと思います。

4

1 に答える 1

1

クロスドメインに移行しようとしている場合は、https://github.com/SignalR/SignalR/wiki/SignalR-JS-Client-Hubsをお読みください。一番下までスクロールします

于 2012-07-02T18:40:50.597 に答える