Page Menu
Home
Phorge
Search
Configure Global Search
Log In
Files
F5365553
test_net_create_connection.cjs
No One
Temporary
Actions
Download File
Edit File
Delete File
View Transforms
Subscribe
Flag For Later
Award Token
Size
2 KB
Referenced Files
None
Subscribers
None
test_net_create_connection.cjs
View Options
const net = require('node:net');
const assert = require('node:assert');
let connected = false;
let serverSawData = false;
let clientSawData = false;
let invalidHostError = false;
let invalidPortError = false;
const timeout = setTimeout(() => {
if (!connected || !serverSawData || !clientSawData || !invalidHostError || !invalidPortError) {
throw new Error('net.createConnection timed out');
}
}, 2000);
function finishWithInvalidHostCheck() {
const socket = net.connect({ host: '256.256.256.256', port: 80 });
socket.on('error', (error) => {
invalidHostError = true;
assert(error instanceof Error);
assert.strictEqual(typeof error.message, 'string');
finishWithInvalidPortCheck();
});
}
function finishWithInvalidPortCheck() {
const socket = net.connect({ host: '127.0.0.1', port: 65536 });
socket.on('error', (error) => {
invalidPortError = true;
assert(error instanceof Error);
assert.strictEqual(typeof error.message, 'string');
clearTimeout(timeout);
console.log('net:create-connection:ok');
});
}
const server = net.createServer((socket) => {
socket.setEncoding('utf8');
socket.on('data', (chunk) => {
if (chunk !== 'ping') throw new Error(`server received ${chunk}`);
serverSawData = true;
socket.write('pong');
});
});
server.on('error', (err) => {
throw err;
});
server.listen(0, '127.0.0.1', () => {
const address = server.address();
const client = net.createConnection({ port: address.port, host: '127.0.0.1' }, () => {
connected = true;
assert.strictEqual(client.pending, false);
assert.strictEqual(client.connecting, false);
client.write('ping');
});
assert.strictEqual(client.pending, true);
assert.strictEqual(client.connecting, true);
client.setEncoding('utf8');
client.on('error', (err) => {
throw err;
});
client.on('data', (chunk) => {
if (chunk !== 'pong') throw new Error(`client received ${chunk}`);
clientSawData = true;
client.end();
server.close(() => {
if (!connected || !serverSawData || !clientSawData) {
throw new Error('net.createConnection did not complete the loopback exchange');
}
finishWithInvalidHostCheck();
});
});
});
File Metadata
Details
Attached
Mime Type
application/javascript
Expires
Sun, May 17, 5:46 AM (2 d)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
554525
Default Alt Text
test_net_create_connection.cjs (2 KB)
Attached To
Mode
rANT Ant
Attached
Detach File
Event Timeline
Log In to Comment