2012-07-02 222 views
0

我试图实现的是一个控制台应用程序,它能够连接到使用SignalR的网站上托管的特定集线器并向其发送消息。signalr客户端应用程序未连接到集线器

我有一个控制台应用程序试图连接到网站上的“聊天”中心。控制台将尝试连接,然后发送消息并关闭。

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枢纽正是基于聊天例如在维基https://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带来的很多想法。

回答

相关问题