// Verify that a connection can be closed gracefully from the client. var assert = require('assert'); var WebSocket = require('../lib/websocket').WebSocket; var WebSocketServer = require('websocket-server/ws/server').Server; var PORT = 1024 + Math.floor(Math.random() * 4096); var C_MSG = 'Client test: ' + (Math.random() * 100); var serverGotClientMessage = false; var clientGotServerClose = false; var serverGotClientClose = false; var wss = new WebSocketServer(); wss.listen(PORT, 'localhost'); wss.on('connection', function(c) { c.on('message', function(m) { assert.equal(m, C_MSG); serverGotClientMessage = true; }); c.on('close', function() { serverGotClientClose = true; wss.close(); }); }); var ws = new WebSocket('ws://localhost:' + PORT); ws.onopen = function() { ws.send(C_MSG); // XXX: Add a timeout here ws.close(5); }; ws.onclose = function() { assert.equal(ws.CLOSED, ws.readyState); clientGotServerClose = true; }; process.on('exit', function() { assert.ok(serverGotClientMessage); assert.ok(clientGotServerClose); assert.ok(serverGotClientClose); });