2013-03-06 91 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

相關問題