2017-08-18 1 views
0

Endlich konnte ich meine App für Azure bereitstellen, allerdings bekomme ich diese immer Fehler mit Socket.ioFehler beim Laden der Ressource: Der Server reagierte mit dem Status 404 (Not Found). Socket.io/?EIO=3&transport=polling&t=1503062449710-0

/socket.io/?EIO=3&transport=polling&t=1503062449710-0 Failed to load resource: the server responded with a status of 404 (Not Found) 

obwohl es auf meinem localhost gearbeitet.

Server Side:

var app = require('express')(); 
var server = require('http').Server(app); 
var io = require('socket.io')(server); 

server.listen(80); 

app.get('/', function (req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 

io.on('connection', function (socket) { 
    socket.emit('news', { hello: 'world' }); 
    socket.on('my other event', function (data) { 
    console.log(data); 
    }); 
}); 

Client Side (index.html):

<html> 

<head> 
    <script src="/socket.io/socket.io.js"></script> 
    <script> 
     var socket = io.connect('http://chattranslatortwo.azurewebsites.net/'); 
     socket.on('news', function(data) { 
      console.log(data); 
      socket.emit('my other event', { 
       my: 'data' 
      }); 
     }); 
    </script> 
</head> 
<body> 
</body> 
</html> 

Jetzt habe ich viele Dinge getan, um zu versuchen, dies zu beheben.

1) Da viele Posts sagten, socket.io zu socket.io-client zu ändern, oder zu "https://cdn.socket.io/socket.io-1.3.7.js" änderte dies nichts für mich, dasselbe Ergebnis.

2) Ich habe versucht, meine node.js und socket.io neu zu installieren, war aber nicht sicher, ob das etwas änderte.

3) Aktivierte meine Azure Web Sockets in Anwendungseinstellungen

4) sorgen dafür, dass meine Verbindung die richtige Stelle war.

ich komme immer wieder auf diese gleiche Fehlermeldung die socket.io ruft:

/socket.io/?EIO=3&transport=polling&t=1503062449710-0 Failed to load resource: the server responded with a status of 404 (Not Found) 

Entweder ich etwas völlig fehlt bin oder es scheint, dass Steckdosen auf WebServices als vom localhost völlig anders arbeiten.

Ich arbeite seit einiger Zeit an diesem Problem.

Antwort

0

Auf Azure App-Service, würden Sie die folgende Zeile

server.listen(80); 

zu

server.listen(process.env.PORT); 

auch ändern müssen, sollten Sie eine web.config in der Wurzel Ihrer Node.js Anwendung erstellen, wenn existiert nicht. Als Referenz ist das Folgende ein Standard web.config für eine Anwendung, die app.js als den Einstiegspunkt verwendet.

<?xml version="1.0" encoding="UTF-8"?> 
<!-- 
     This configuration file is required if iisnode is used to run node processes behind 
     IIS or IIS Express. For more information, visit: 

     https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config 
    --> 
<configuration> 
    <system.webServer> 
    <!-- Visit http://blogs.msdn.com/b/windowsazure/archive/2013/11/14/introduction-to-websockets-on-windows-azure-web-sites.aspx for more information on WebSocket support --> 
    <webSocket enabled="false" /> 
    <handlers> 
     <!-- Indicates that the server.js file is a node.js web app to be handled by the iisnode module --> 
     <add name="iisnode" path="app.js" verb="*" modules="iisnode" /> 
    </handlers> 
    <rewrite> 
     <rules> 
     <!-- Do not interfere with requests for node-inspector debugging --> 
     <rule name="NodeInspector" patternSyntax="ECMAScript" stopProcessing="true"> 
      <match url="^app.js\/debug[\/]?" /> 
     </rule> 
     <!-- First we consider whether the incoming URL matches a physical file in the /public folder --> 
     <rule name="StaticContent"> 
      <action type="Rewrite" url="public{REQUEST_URI}" /> 
     </rule> 
     <!-- All other URLs are mapped to the node.js web app entry point --> 
     <rule name="DynamicContent"> 
      <conditions> 
      <add input="{REQUEST_FILENAME}" matchType="IsFile" negate="True" /> 
      </conditions> 
      <action type="Rewrite" url="app.js" /> 
     </rule> 
     </rules> 
    </rewrite> 
    <!-- 
     You can control how Node is hosted within IIS using the following options: 
      * watchedFiles: semi-colon separated list of files that will be watched for changes to restart the server 
      * node_env: will be propagated to node as NODE_ENV environment variable 
      * debuggingEnabled - controls whether the built-in debugger is enabled 

     See https://github.com/tjanczuk/iisnode/blob/master/src/samples/configuration/web.config for a full list of options 
     --> 
    <!--<iisnode watchedFiles="web.config;*.js"/>--> 
    </system.webServer> 
</configuration> 

Weitere Informationen finden Sie in Create a Node.js chat application with Socket.IO in Azure App Service.

Verwandte Themen