SignalR 1.0alpha2控制台服务器应用程序

时间:2012-11-22 13:45:13

标签: asp.net nuget signalr

我正在使用signalR的新1.0alpha2版本。 我想在ASP.NET应用程序外部实现SignalR服务器。这样两个控制台应用程序就可以相互通信。

使用旧的0.5.3版本,我能够“安装包装SignalR.Hosting.Self”到:

var server = new Server("http://127.0.0.1:8088/");

但是在新的1.0alpha2版本中我无法安装这个NuGet包...

任何人都可以给我一个链接,或者可能是一个基于 1.0alpha2 版本的两个控制台应用程序的迷你示例。 (我只能找到不老的0.5.3例子......)。


确定。所以我按照你的指示。现在:

我的客户端控制台:

class Programm 
{
  static void Main(string[] args) 
  {
    var connection = new HubConnection("http://localhost/");
    IHubProxy myHub = connection.CreateHubProxy("MyHub");
    connection.Start().ContinueWith(task =>
      {
          if (task.IsFaulted)
              Console.WriteLine("No Connection: " + task.Exception.GetBaseException());
          else
              Console.WriteLine("Connected!");
      });

    myHub.Invoke("Send");

    Console.ReadLine(); // wait...
  }
}

这是我的服务器控制台:

class Program : Hub
{
  static void Main(string[] args)
  {
      Console.ReadKey();
  }
  public void Send(string message)
  {
      Debug.WriteLine("Server Method [send] was called");
      Console.WriteLine("Server Method [send] was called");
  }
}

但我认为这是无稽之谈......

1 个答案:

答案 0 :(得分:4)

你需要使用新的NuGet软件包,因为SignalR正式发布:(说ASP,但它也用于.NET应用程序)

Install-Package Microsoft.AspNet.SignalR -pre服务器

Install-Package -pre Microsoft.AspNet.SignalR.Client客户

此处还有一个预构建的示例应用程序,您可以将控制台应用程序挂钩进行某些测试:

Install-Package Microsoft.AspNet.SignalR.Sample

使用客户;连接两个控制台应用程序需要托管集线器,而其他应用程序需要使用指向主机的客户端连接。

您需要的所有信息都在此客户端wiki中:link


<强> 修改

服务器:(使用自我主持人)

class Program
{
    static void Main(string[] args)
    {
        string url = "http://localhost:8081/";
        var server = new Server(url);

        // Map the default hub url (/signalr)
        server.MapHubs();

        // Start the server
        server.Start();

        Console.WriteLine("Server running on {0}", url);

        // Keep going until somebody hits 'x'
        while (true)
        {
            ConsoleKeyInfo ki = Console.ReadKey(true);
            if (ki.Key == ConsoleKey.X)
            {
                break;
            }
        }
    }

    public class MyHub : Hub
    {
        public void Send(string message)
        {
            Clients.All.addMessage(message);

        }
    }

}

客户端:

class Program
{
    static void Main(string[] args)
    {
        var connection = new HubConnection("http://localhost:8081/");

        IHubProxy proxy = connection.CreateHubProxy("MyHub");

        connection.Start().Wait();

        proxy.On("addMessage", data => { Console.WriteLine("From Server: " + data); });

        while (true)
        {
            proxy.Invoke("Send", Console.ReadLine());
        }

    }
}

enter image description here

PS。在下面的评论中将下载添加到两个解决方案中。我相信你会好起来的。