在Service Stack REST API服务中使用SignalR

JDB*_*Bet 19 webserver servicestack web signalr

是否可以在服务堆栈项目中使用SignalR?我们目前正在为REST Web API使用服务堆栈.我们总体上对它的架构,灵活性等感到高兴.现在我们正在探索使用事件驱动或推送技术(与状态轮询相比)与我们的呼叫客户端进行通信的方法.我应该注意到,我们目前使用AppHostHttpListenerBase(在IIS内部托管)在Windows服务中托管我们的API.

是否有可能配置一个专门的路由,以某种方式传递给SignalR Hub,所以这两个可以并存?例如,它http://localhost:8000/api/live/jobs/jobid会击中SignalR代码,但http://localhost:8000/api/jobs/jobid会路由到当前基于DTO的服务堆栈代码.

PS - 我们希望继续以自主模式托管,因为我们喜欢移植到Mono并在Linux上运行的灵活性(与IIS绑定).

el_*_*one 0

SignalR 提供使用 OWIN 构建的自主机选项。

我注意到 Service Stack很快也会有一个 OWIN 托管实现,以防您无法添加 SignalR。

然后,您可以使用Firefly之类的工具轻松托管应用程序的两个部分,而无需将自己束缚于任何一台服务器实现。

以下是自主机启动代码供参考:

using System;
using Microsoft.AspNet.SignalR;
using Microsoft.Owin.Hosting;
using Owin;

namespace SignalR.Hosting.Self.Samples
{
    class Program
    {
        static void Main(string[] args)
        {
            string url = "http://localhost:8080";

            using (WebApplication.Start<Startup>(url))
            {
                Console.WriteLine("Server running on {0}", url);
                Console.ReadLine();
            }
        }
    }

    class Startup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapHubs();
        }
    }

    public class MyHub : Hub
    {
        public void Send(string message)
        {
            Clients.All.addMessage(message);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)