mirror of
https://github.com/smogon/pokemon-showdown.git
synced 2026-04-28 03:36:56 -05:00
64 lines
1.5 KiB
JavaScript
64 lines
1.5 KiB
JavaScript
// Verify that both sides of the WS connection can both send and receive file
|
|
// descriptors.
|
|
|
|
var assert = require('assert');
|
|
var fs = require('fs');
|
|
var path = require('path');
|
|
var sys = require('sys');
|
|
var WebSocket = require('../lib/websocket').WebSocket;
|
|
var WebSocketServer = require('websocket-server/ws/server').Server;
|
|
|
|
var PATH = path.join(__dirname, 'sock.' + process.pid);
|
|
var C_MSG = 'Client test: ' + (Math.random() * 100);
|
|
var S_MSG = 'Server test: ' + (Math.random() * 100);
|
|
|
|
var clientReceivedData = false;
|
|
var clientReceivedFD = false;
|
|
var serverReceivedData = false;
|
|
var serverReceivedFD = false;
|
|
|
|
var wss = new WebSocketServer();
|
|
wss.on('listening', function() {
|
|
var ws = new WebSocket('ws+unix://' + PATH);
|
|
ws.on('data', function(d) {
|
|
assert.equal(d.toString('utf8'), S_MSG);
|
|
|
|
clientReceivedData = true;
|
|
|
|
ws.send(C_MSG, 1);
|
|
ws.close();
|
|
});
|
|
ws.on('fd', function(fd) {
|
|
assert.ok(fd >= 0);
|
|
|
|
clientReceivedFD = true;
|
|
});
|
|
});
|
|
wss.on('connection', function(c) {
|
|
c.write(S_MSG, 0);
|
|
c._req.socket.on('fd', function(fd) {
|
|
assert.ok(fd >= 0);
|
|
|
|
serverReceivedFD = true;
|
|
});
|
|
c.on('message', function(d) {
|
|
assert.equal(d, C_MSG);
|
|
|
|
serverReceivedData = true;
|
|
|
|
wss.close();
|
|
});
|
|
});
|
|
wss.listen(PATH);
|
|
|
|
process.on('exit', function() {
|
|
assert.ok(clientReceivedFD);
|
|
assert.ok(clientReceivedData);
|
|
assert.ok(serverReceivedFD);
|
|
assert.ok(serverReceivedData);
|
|
|
|
try {
|
|
fs.unlinkSync(PATH);
|
|
} catch (e) { }
|
|
});
|