【发布时间】:2015-12-09 23:57:36
【问题描述】:
我已经使用 Signalr 和 Windows 窗体构建了一个简单的聊天应用程序,但是我的应用程序是自托管的,并且只能在我的本地主机地址上运行,我如何在 azure 上在线上传服务器并将我的桌面客户端应用程序连接到它?我刚刚开始学习 Signalr。我对谷歌做了一些研究,但找不到任何可以回答我问题的东西。
【问题讨论】:
我已经使用 Signalr 和 Windows 窗体构建了一个简单的聊天应用程序,但是我的应用程序是自托管的,并且只能在我的本地主机地址上运行,我如何在 azure 上在线上传服务器并将我的桌面客户端应用程序连接到它?我刚刚开始学习 Signalr。我对谷歌做了一些研究,但找不到任何可以回答我问题的东西。
【问题讨论】:
您只需将您的 signalR Hub 发布为一个网站,您是否在其中托管您的网站都没有关系
托管 SignalR Hub 的最“自然”方式是 ASP.Net 网站,无论该网站是否为 azure。所以你不会在那里找到任何复杂的场景。
您的聊天中心代码可能如下所示(来自 signalR 文档的代码)
using System;
using System.Web;
using Microsoft.AspNet.SignalR;
namespace SignalRChat
{
public class ChatHub : Hub
{
public void Send(string name, string message)
{
// Call the broadcastMessage method to update clients.
Clients.All.broadcastMessage(name, message);
}
}
}
您唯一需要做的就是将集线器放在一个 ASP.NET Web 应用程序中,即使是一个空的应用程序。当然,您需要添加 SignalR nuget 包。
在启动类(任何 OWIN 应用程序都需要)中,您必须调用app.MapSignalR,如下所示:
using Microsoft.Owin;
using Owin;
[assembly: OwinStartup(typeof(SignalRChat.Startup))]
namespace SignalRChat
{
public class Startup
{
public void Configuration(IAppBuilder app)
{
// Any connection or hub wire up and configuration should go here
app.MapSignalR();
}
}
}
差不多就这些了。
创建 Web 应用后,您可以在任何地方托管它,我建议您将应用托管在 Azure Web 应用中。
这是关于如何实现我上面告诉你的步骤的完整/详细教程:
【讨论】:
我认为最简单的方法是创建一个Azure Worker Role 并使用它来托管您的服务器。
Here you can find the documentation that explains how to Host OWIN in an Azure Worker Role.
希望这会有所帮助。
祝你好运!
更新:关于自托管应用程序似乎有些混乱。
如果您有一个在 IIS 上运行的 ASP.NET 网站,那么最简单的方法是通过 Azure WebApps。另一种选择是通过云服务,或在 Azure 上创建虚拟机。
但如果您确实有一个自托管的 OWIN 应用程序,那么您必须有一个可以托管 OWIN 应用程序的辅助角色。在这种情况下,请按照我提供的文档进行操作。
Here is how to create a SignalR self hosted application.
因此,关于您如何创建 SignalR 应用程序,您可以在这些方法之间进行选择。
祝你好运!
【讨论】: