我正在使用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");
}
}
但我认为这是无稽之谈......
答案 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());
}
}
}
PS。在下面的评论中将下载添加到两个解决方案中。我相信你会好起来的。