2013-03-05 14 views
5

Sto utilizzando socket.io per un progetto di Windows Azure. Stranamente il server socket.io inizia quando ho appena distribuire il ruolo web, ma quando schiero l'intero progetto nuvola, il server socket.io doesnt iniziare e ottengo questo errore -XMLHttpRequest: errore di rete 0x2efd, impossibile completare l'operazione a causa di un errore 00002efd

"SCRIPT7002: XMLHttpRequest: Network Error 0x2efd, Could not complete the operation due to error 00002efd." 

non ho assolutamente idea di che cosa si intende. Qualcuno può darmi una mano su questo? Ho battuto la testa per tutto il giorno.

SocketClient.html

<script> 
var socket = io.connect('http://127.0.0.1:4001'); 
socket.on('news', function (data) { 
    console.log(data);  
}); 

$(function() { 
    $("#sendresponse").bind("click", function() { 
    socket.emit('server', 'Hello World'); 

    }); 
} 
); 
</script> 

App.js

var app = require('express')(), server = require('http').createServer(app), io = require('socket.io').listen(server); 

server.listen(4001); 

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

io.sockets.on('connection', function (socket) { 
socket.emit('news', { hello: 'first time connect' }); 
socket.on('server', function (data) { 
    console.log(data); 
    socket.emit('news',"hello"); 
}); 
}); 
+0

ERROR_INTERNET_REQUEST_PENDING, "Impossibile completare l'operazione richiesta perché una o più richieste sono in sospeso". –

+0

Cosa significa nel mio contesto socket.io? – Bitsian

+0

E come posso risolverlo? – Bitsian

risposta

3

è scoperto che lo script App.js non era in funzione quando ho schierato il progetto nuvola, cioè il gestore iisnode che avevo messo nel mio web.config non stava facendo il suo lavoro quando è stato distribuito l'intero progetto cloud. Dopo aver esaminato questo article ho scoperto che dovevo mettere alcuni file nella mia cartella bin del ruolo web, ovvero ChangeConfig.ps1, download.ps1, node.cmd, setup_web.cmd. è possibile generare questi file quando si passa attraverso quell'articolo. E infine devi inserire questo codice nel tuo ServiceDefinition.csdef

<Startup>  
<Task commandLine="setup_web.cmd &gt; log.txt" executionContext="elevated"> 
    <Environment> 
     <Variable name="EMULATED"> 
     <RoleInstanceValue xpath="/RoleEnvironment/Deployment/@emulated" /> 
     </Variable> 
     <Variable name="RUNTIMEID" value="node;iisnode" /> 
     <Variable name="RUNTIMEURL" value="" /> 
    </Environment> 
    </Task> 
</Startup> 

E voilà !! Esso funziona magicamente. Dovresti comunque avviare il server socket.io eseguendo 127.0.0.1/App.js sul browser. Sto ancora guardando come avviare App.js in modo programmatico.

Problemi correlati