2013-03-06 51 views
0

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

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

但我希望脚本自动运行,只要我在我的VS启动项目。任何想法如何我可以做到这一点?

编辑:

原来iisnode可以搞定一切,我不得不把重写代码在web.config中。从这里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脚本样本蔚蓝节点JS应用。我想这跟我上面写的重写代码有关。我应该做些什么改变才能让App.js在启动时运行,并且仍然能够访问我的其他html视图?

感谢

回答

0

您将需要建立在运行的node.js服务defintiion切入点,然后当你在模拟器中运行该项目,它会自动旋转起来,就像somethign:

需要注意的是,你不“T 使用,相较于节点的应用程序,你可以使用Windows Azure的PowerShell来建立一个节点工作者的角色来承载您的应用程序,请参见:

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

的教程PON设置插座.io应用程序使用PowerShell

+0

实际上是在web角色中运行我的节点js脚本和socket.io实现。它应该只在工作角色中完成吗? – Bitsian 2013-03-13 05:18:06

+0

同样,worker角色对于当前的非.NET角色的websockets来说更好。这应该在不久的将来改变。 Windows Azure PowerShell真的是你想要使用的,它更好地支持部署非.Net角色 – 2013-03-19 02:59:52

0

您是否更改了Handler“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" /> 
+0

当我把任务放在.csdef中时,角色不会启动,它们会挂起,这意味着命令不可能是执行或什么的。任何想法可能是什么问题? – Bitsian 2013-03-14 05:48:07

+0

您是否创建了AzureNodeWebRole或AzureWebRole?阅读这个来创建一个基本nodeJS天蓝色项目:http://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/ – throrin19 2013-03-14 08:32:04

+0

VS 2012的Azure web角色。我的节点js文件只是一个小大部分用c#编写的大型网站角色的一部分。我只需要把这个节点的js文件来实现socket.io。所以我不认为我应该去蔚蓝节点的网络角色,我应该吗? – Bitsian 2013-03-14 09:05:30

1

嗯,这取决于你为什么使用socket.io,工人的角色可能是更好的选择。 WebRole当前不支持WebSockets,因此如果您使用Web角色,则需要将传输设置为xhr-polling。

如果您只是对Web角色感兴趣,您还可以考虑使用Azure网站托管您的应用。您可以检查出有可部署直接到蔚蓝的网站一个socket.io聊天应用我的样本回购:

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

+0

非常感谢答复,但我只能upvote它,因为我仍然无法启动我的节点js正确的脚本。 – Bitsian 2013-03-14 05:51:57

+0

顺便说一句,WebRole不支持Web套接字?因为我的印象是IIS 8支持网络套接字? – Bitsian 2013-03-14 06:07:50

+0

非.NET角色的WebSockets在技术上是可行的,但不受支持。如果您只使用node.js,那么现在您的工作人员角色会更好 – 2013-03-19 02:58:11

相关问题