如何在node.js上托管servicestack?

时间:2014-02-19 10:24:39

标签: node.js servicestack

我们有一个访问servicestack REST服务的Icneium Hybrid Mobile应用程序。可以在Node.js而不是IIS上托管servicestack吗?任何例子都受到高度赞赏。

1 个答案:

答案 0 :(得分:5)

您将无法直接在node.js中托管ServiceStack,但是有许多节点代理模块可以透明地将请求代理到ServiceStack Self Hosted application,从而无需IIS。

您现在有两个选择:

  1. 如果您的意图只是放弃IIS而您并不特别需要node.js,那么自托管应用程序就很棒,因为没有其他依赖层。请求可以直接发送到ServiceStack。

  2. 但是,如果您希望与node.js进行一些集成,那么正如我所说的透明代理可以将请求转发到ServiceStack服务,但您仍然需要在节点后面运行自托管ServiceStack服务代理。

  3. 设置自托管ServiceStack服务

    让这个工作。您需要配置ServiceStack才能使用自托管。这样做的方法是在控制台应用程序中创建一个AppHostHttpListenerBase AppHost,如链接(上图)所示。

    拥有自托管应用程序后,您将配置ServiceStack将侦听的主机名和端口。如果您导航到该URL,您应该会看到ServiceStack服务。

    如果您选择不使用节点(选项1),则可以直接访问ServiceStack应用程序。如果您确实希望与节点一起使用,因为您的应用程序的某些其他部分已经使用了节点(选项2),请按照以下步骤设置代理。

    Node.JS代理

    节点有many proxy modules可用。我选择了流行的node-http-proxy, by nodejitsu

    设置看起来很简单。端口80 标准http端口上的请求将转发到localhost:9000上的ServiceStack应用程序。假设它正在运行。

    var http = require('http'),
    httpProxy = require('http-proxy');
    httpProxy.createProxyServer({target:'http://localhost:9000'}).listen(80);
    

    如果您需要更多控制权。查看所有options in the documentation