windows - que - websockets php



Los mensajes de Websocket desaparecen misteriosamente (0)

Me estoy volviendo loco tratando de descubrir qué pasa con mi sistema que no puede enviar mensajes de websocket. He intentado muchas cosas:

  • Chrome 32, firefox 27, es decir, 10
  • varias bibliotecas del servidor websocket: ws, websocket, nodejs-websocket
  • ejecutando el servidor en Windows y Centos
  • reinstalando node.js (a la versión 0.10.26)
  • reinstalar Firefox
  • Apagando mi firewall

El comportamiento es siempre el mismo: tanto el cliente como el servidor dicen que obtienen una conexión, pero cuando el cliente intenta enviar un mensaje, el otro simplemente no lo consigue. A veces aparece "Error: leer ECONNRESET" en el servidor, pero no todo el tiempo. Alrededor del 50% del tiempo simplemente falla silenciosamente. Finalmente, la conexión se cierra.

Si agrego código para enviar un mensaje desde el servidor en la conexión, siempre aparece "Error: leer ECONNRESET".

¿Qué funciona?

Entonces, ¿qué podría causar que solo mi conexión de websocket local caiga mensajes en silencio?

Servidor:

var

 ws = require('websocket').server
var http = require('http')

var server = http.createServer(function(request, response) {
    console.log("connection received for "+request.url)
    response.writeHead(404)
    response.end()  
})
server.listen(8080, function() {
    console.log("now listening")    
})

wsServer = new ws({httpServer:server, autoAcceptConnections: false})

wsServer.on('request', function(request) {
    console.log("got request")
    var connection = request.accept('a', request.origin)
    console.log("got connection")
    connection.on('message', function(message) {
        console.log("got message: "+message)
    })      

    connection.on("close", function() {
        console.log("closed")   
    })

    connection.on('error', function(e) {
        console.log('Error: '+e)    
    })
})

Salida:

got connection closed

Cliente:

<script>    
var ws = new WebSocket('ws://localhost:8080/', 'a')
ws.onopen = function() {
    console.log('open') 
    ws.send('something2')
}

ws.onerror = function(e) {
    console.log(e)  
}

ws.onmessage = function(m) {
    console.log(m)
}       

ws.onclose = function() {
    console.log('closed')   
}
</script>

Salida

open closed

Esto me está volviendo loca.





websocket