2013-03-06 4 views
0

Suis très nouveau pour le noeud js et socket.io. J'utilise socket.io pour un projet windows azure. J'ai créé un App.js qui démarre le serveur socket.io, mais je ne sais pas comment exécuter ce script par programme. Je suis capable d'exécuter ce script à partir de l'invite de commande comme "node app.js" et le serveur socket.io démarre et l'application cliente est capable d'interagir avec le serveur socket.io bien.Comment démarrer le script node js dans un projet de cloud Windows Azure?

Je peux aussi aller à 127.0.0.1/App.js et le serveur socket.io démarre. Mais je veux que le script s'exécute automatiquement dès que je démarre le projet dans mon VS. Une idée sur comment je peux faire ça?

EDIT:

Chassé iisnode peut tout gérer, je devais juste mettre un code de réécriture dans web.config. A partir d'une demande de noeud bleu azur échantillon d'ici http://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/ je suis arrivé ce code rewrite

<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> 

Son démarrage du app.js automatiquement, mais son re diriger toutes mes vues sur le script app.js. Je suppose que cela a quelque chose à voir avec le code de réécriture que j'ai mis ci-dessus. Quels changements dois-je faire pour lancer App.js au démarrage et continuer à accéder à mes autres vues html?

Merci

Répondre

0

Ce tutoriel est un guide étape par étape pour la construction et le déploiement de l'application NodeJS sur Azure http://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/

+0

Ya, je suis allé à travers elle, mais le processus est fait en utilisant shell puissance Windows Azure , je travaille sur VS 12, j'espérais qu'il y aurait un code avec lequel je peux commencer l'application.js script au démarrage? – Bitsian

0

Vous auriez besoin de mettre en place un point d'entrée dans le defintiion de service qui fonctionne Node.js, puis lorsque vous exécutez le projet dans l'émulateur, il tournera automatiquement, comme somethign:

Notez que, vous n « T ont à utiliser vs pour une application de nœud, vous pouvez utiliser Windows Azure PowerShell pour mettre en place un rôle de travailleur de nœud pour héberger votre application, voir:

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

pour un tutoriel pon mise en place de la prise Applications .io utilisant PowerShell

+0

Exécute actuellement mon script node js et l'implémentation socket.io dans le rôle web. Devrait-il être fait uniquement dans le rôle de travailleur? – Bitsian

+0

Encore une fois, le rôle de travail est meilleur pour les websockets pour les rôles non-Net actuellement. Cela devrait changer dans un très proche avenir. Windows Azure PowerShell est vraiment ce que vous voulez utiliser pour cela, il a un meilleur support pour le déploiement des rôles non.Net –

0

Avez-vous changé votre 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> 

et modifier des tâches de votre WebRole dans votre .csdef:

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

Quand je mets la tâche dans .csdef, les rôles ne commencent pas, ils se bloquent, ce qui signifie que la commande ne pourrait pas être exécuté ou quelque chose. Une idée de ce que le problème pourrait être? – Bitsian

+0

Avez-vous créé un AzureNodeWebRole ou un AzureWebRole? Lisez ceci pour créer un projet de base nodeJS azure: http://www.windowsazure.com/en-us/develop/nodejs/tutorials/getting-started/ – throrin19

+0

Rôle Azure Web de VS 2012. Mon fichier js node est juste un petit partie d'un grand rôle web qui est principalement écrit en C#. J'ai juste besoin de mettre ce fichier js node pour implémenter socket.io. SO je ne pense pas que je devrais aller pour le rôle de Web de noeud d'azur, devrais-je? – Bitsian

1

Eh bien, selon la raison pour laquelle vous utilisez socket.io, le rôle des travailleurs peut être un meilleur ajustement. WebSockets n'est actuellement pas pris en charge dans WebRole. Vous devez donc définir vos transports sur xhr-polling uniquement si vous avez utilisé un rôle Web.

Vous pouvez également utiliser des sites Web azur pour héberger votre application si vous êtes uniquement intéressé par un rôle Web. Vous pouvez consulter mon repo échantillon qui a une socket.io application de chat qui peut être déployé directement aux sites d'azur:

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

+0

Merci beaucoup pour la réponse, mais je ne peux que le remettre car je ne suis pas encore capable de démarrer mon noeud js scripts correctement. – Bitsian

+0

Et btw êtes-vous sûr que les sockets Web ne sont pas pris en charge dans WebRole? parce que j'étais sous l'impression que IIS 8 prend en charge les sockets Web? – Bitsian

+0

WebSockets dans des rôles non-Net est techniquement possible, mais pas pris en charge. Si vous n'utilisez que node.js, vous êtes bien mieux avec un rôle de travailleur pour l'instant –

Questions connexes