我疯狂地想弄清楚我的系统出了什么问题,因为它无法发送websocket消息。我尝试了很多东西:
行为始终是相同的:客户端和服务器都说他们得到了连接,但是当客户端尝试发送消息时,另一个人根本就没有得到它。有时我得到"错误:读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
这让我发疯了。