如何在Windows Azure云项目中启动节点js脚本?

时间:2013-03-06 10:18:04

标签: node.js azure socket.io iisnode

对节点js和socket.io来说非常新。我正在使用socket.io进行windows azure项目。我创建了一个启动socket.io服务器的App.js,但我不知道如何以编程方式运行该脚本。我能够从命令提示符运行该脚本,如“node app.js”,socket.io服务器启动,客户端应用程序能够很好地与socket.io服务器交互。

我也可以访问127.0.0.1/App.js并启动socket.io服务器。

但是我想在我的VS中启动项目时脚本自动运行。我怎么能这样做?

编辑:

原来iisnode可以处理所有事情,我只需要在web.config中添加重写代码。从示例azure节点js应用程序http://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/我得到了这个重写代码

<rewrite>
  <rules>
    <clear />
    <rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
      <match url="iisnode.+" negate="true" />
      <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
      <action type="Rewrite" url="App.js" />
    </rule>
  </rules>
</rewrite>

它自动启动App.js,但它将我的所有视图重定向到App.js脚本。我想这与我上面的重写代码有关。我应该做些什么改变才能让App.js在启动时运行并且仍能访问我的其他html视图?

由于

4 个答案:

答案 0 :(得分:1)

那么,根据您使用socket.io的原因,工作者角色可能更合适。 WebRocket目前不支持WebSockets,因此如果您使用了Web角色,则需要将传输设置为xhr-polling。

如果您只对网络角色感兴趣,也可以考虑使用azure网站托管您的应用。你可以查看我的样本仓库,它有一个可以直接部署到azure网站的socket.io聊天应用程序:

http://github.com/markcowl/WebChatDefault-1

答案 1 :(得分:0)

本教程是在Azure http://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/上构建和部署nodeJS应用程序的分步指南

答案 2 :(得分:0)

你需要在运行node.js的服务定义中设置一个入口点,然后当你在模拟器中运行项目时,它会自动旋转,有些像是:

               

请注意,您没有 使用vs作为节点应用,您可以使用Windows Azure PowerShell设置节点工作者角色来托管您的应用,请参阅:

http://www.windowsazure.com/en-us/develop/nodejs/tutorials/app-using-socketio/

使用PowerShell设置socket.io应用程序的教程

答案 3 :(得分:0)

您是否更改了处理程序“iisnode”?

<!-- indicates that the server.js file is a node.js application 
to be handled by the iisnode module -->
<handlers>
  <add name="iisnode" path="App.js" verb="*" modules="iisnode" />
</handlers>
<rewrite>
  <rules>
    <clear />
    <rule name="app" enabled="true" patternSyntax="ECMAScript" stopProcessing="true">
        <match url="iisnode.+" negate="true" />
        <conditions logicalGrouping="MatchAll" trackAllCaptures="false" />
        <action type="Rewrite" url="App.js" />
    </rule>
  </rules>
</rewrite>

在.csdef中编辑WebRole的任务:

<Task commandLine="node.cmd ..\App.js" executionContext="elevated" />