Websocket消息神秘地消失了

时间:2014-03-13 05:16:19

标签: windows node.js google-chrome firefox websocket

我疯狂地想弄清楚我的系统出了什么问题,因为它无法发送websocket消息。我尝试了很多东西:

  • Chrome 32,firefox 27,即10
  • 各种websocket服务器库:ws,websocket,nodejs-websocket
  • 在Windows和centos上运行服务器
  • 重新安装node.js(版本0.10.26)
  • 重新安装firefox
  • 关闭防火墙

行为始终是相同的:客户端和服务器都说他们得到了连接,但是当客户端尝试发送消息时,另一个人根本就没有得到它。有时我得到"错误:读ECONNRESET"在服务器上 - 但不是所有的时间。大约50%的时间它只是默默地失败了。最终连接关闭。

如果我添加代码以在连接时从服务器发送消息,它总是得到"错误:读取ECONNRESET"。

有什么用?

那么什么可能导致只是我的本地websocket连接以静默方式丢弃消息?

服务器:

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

输出:

got connection closed

客户端:

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

输出

open closed

这让我发疯了。

0 个答案:

没有答案