Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 26 additions & 0 deletions package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "tcp_server",
"version": "1.0.0",
"description": "a basic tcp chatroom",
"main": "server.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/simonszc/tcp_server.git"
},
"author": "zach simonson",
"license": "ISC",
"bugs": {
"url": "https://github.com/simonszc/tcp_server/issues"
},
"homepage": "https://github.com/simonszc/tcp_server#readme",
"devDependencies": {
"chai": "^3.5.0"
}
}
18 changes: 18 additions & 0 deletions server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,18 @@
'use strict';

const net = require('net');
const sockets = [];

const server = net.createServer((socket) => {
sockets.push(socket);
socket.on('data', (chunk) => {
let curName = sockets.indexOf(socket);
sockets.forEach((item, index, array) => {
if (curName !== index) {
item.write(curName + ': ' + chunk.toString());
}
})
})
}).listen(3000, () => {
console.log('up on 3000')
})
75 changes: 75 additions & 0 deletions test/test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,75 @@
'use strict'

const createServer = require(__dirname + '/../server.js');
const expect = require('chai').expect
const net = require('net');
let clientZero;
let clientOne;
let clientZeroResponses = {};
let clientOneResponses = {};

describe('server', () => {
before(() => {
clientZero = net.connect({port: 3000});
clientOne = net.connect({port: 3000});
})
it('one should get zeros input', () => {
clientOne.on('data', (chunk) => {
clientOneResponses.firstTest = chunk.toString();
expect(clientOneResponses.firstTest).to.eql('0: hello');
});
clientZero.write('hello');
});
it('one should not get ones input', () => {
clientOne.on('data', (chunk) => {
clientOneResponses.secondTest = chunk.toString();
expect(!clientOneResponses.secondTest);
});
clientOne.write('hello');
});
it('zero should get ones input', () => {
clientZero.on('data', (chunk) => {
clientZeroResponses.thirdTest = chunk.toString();
expect(clientZeroResponses.thirdTest).to.eql('1: wassup');
});
clientZero.write('wassup');
});
it('zero should not get zeros input', () => {
clientZero.on('data', (chunk) => {
clientZeroResponses.fourthTest = chunk.toString();
expect(!clientZeroResponses.fourthTest);
});
clientZero.write('wassup');
})
it('stuff', () => {
console.log(clientOneResponses, clientZeroResponses);
})
// it('when clientZero inputs a string, clientOne should get that string', (done) => {
// clientOne.on('data', (chunk) => {
// clientOneResponses.firstInput = chunk.toString();
// expect(chunk.toString()).to.eql('0: hello');
// });
// clientZero.write('hello');
// done();
// })
// it('when clientZero inputs a string, clientZero should not get that string', () => {
// clientZero.on('data', (chunk) => {
// throw new Error('this should not have been received');
// console.log('this should not have been received!');
// });
// clientZero.write('hello');
// done();
// });
// it('when clientOne inputs a string, clientZero should get that string', (done) => {
// clientZero.on('data', (chunk) => {
// clientZeroResponses.firstInput = chunk.toString();
// console.log(clientZeroResponses);
// expect(chunk.toString()).to.eql('1: wassup');
// });
// clientOne.write('wassup');
// done();
// })
// it('trying stuff', () => {
// console.log(clientZeroResponses, clientOneResponses);
// })
});
26 changes: 26 additions & 0 deletions zach/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"name": "tcp_server",
"version": "1.0.0",
"description": "a basic tcp chatroom",
"main": "server.js",
"directories": {
"test": "test"
},
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1",
"start": "node server.js"
},
"repository": {
"type": "git",
"url": "git+https://github.com/simonszc/tcp_server.git"
},
"author": "zach simonson",
"license": "ISC",
"bugs": {
"url": "https://github.com/simonszc/tcp_server/issues"
},
"homepage": "https://github.com/simonszc/tcp_server#readme",
"devDependencies": {
"chai": "^3.5.0"
}
}
19 changes: 19 additions & 0 deletions zach/server.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
'use strict';

const net = require('net');
const sockets = [];

const server = net.createServer((socket) => {
sockets.push(socket);
socket.on('data', (chunk) => {
// let curName = sockets.indexOf(socket);
sockets.forEach((item, index, array) => {
// if (curName !== index) {
if (item === socket) return;
item.write(curName + ': ' + chunk.toString());
// }
})
})
}).listen(3000, () => {
console.log('up on 3000')
})
97 changes: 97 additions & 0 deletions zach/test/test.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,97 @@
'use strict'

const createServer = require(__dirname + '/../server.js');
const expect = require('chai').expect
const net = require('net');

describe('server', () => {
// before(() => {
// clientZero = net.connect({port: 3000}), () => {
// clientZero.write('SENT BY CLIENT ZERO');
// };
// clientOne = net.connect({port: 3000}, () => {
// clientOne.on('data', (chunk) => {
// expect(chunk.toString()).to.eql('SENT BY CLIENT ZERO')
// })
// });
// })
it('should send a message to all clients except sender', () => {
let result;
let wroteBack = false;
let clientZero = net.connect({port: 3000}, () => {
clientZero.on('data', () => {
wroteBack = true;
})
clientZero.write('SENT BY CLIENT ZERO');
});
let clientOne = net.connect({port: 3000}, () => {
clientOne.on('data', (chunk) => {
result = data.toString;
})
});
setTimeout(() => {
expect(results).to.eql('SENT BY CLIENT ZERO');
expect(wroteBack).to.eql(false);
done();
}, 200)
})
// it('one should get zeros input', () => {
// clientOne.on('data', (chunk) => {
// clientOneResponses.firstTest = chunk.toString();
// expect(clientOneResponses.firstTest).to.eql('0: hello');
// });
// clientZero.write('hello');
// });
// it('one should not get ones input', () => {
// clientOne.on('data', (chunk) => {
// clientOneResponses.secondTest = chunk.toString();
// expect(!clientOneResponses.secondTest);
// });
// clientOne.write('hello');
// });
// it('zero should get ones input', () => {
// clientZero.on('data', (chunk) => {
// clientZeroResponses.thirdTest = chunk.toString();
// expect(clientZeroResponses.thirdTest).to.eql('1: wassup');
// });
// clientZero.write('wassup');
// });
// it('zero should not get zeros input', () => {
// clientZero.on('data', (chunk) => {
// clientZeroResponses.fourthTest = chunk.toString();
// expect(!clientZeroResponses.fourthTest);
// });
// clientZero.write('wassup');
// })
// it('stuff', () => {
// console.log(clientOneResponses, clientZeroResponses);
// })
// it('when clientZero inputs a string, clientOne should get that string', (done) => {
// clientOne.on('data', (chunk) => {
// clientOneResponses.firstInput = chunk.toString();
// expect(chunk.toString()).to.eql('0: hello');
// });
// clientZero.write('hello');
// done();
// })
// it('when clientZero inputs a string, clientZero should not get that string', () => {
// clientZero.on('data', (chunk) => {
// throw new Error('this should not have been received');
// console.log('this should not have been received!');
// });
// clientZero.write('hello');
// done();
// });
// it('when clientOne inputs a string, clientZero should get that string', (done) => {
// clientZero.on('data', (chunk) => {
// clientZeroResponses.firstInput = chunk.toString();
// console.log(clientZeroResponses);
// expect(chunk.toString()).to.eql('1: wassup');
// });
// clientOne.write('wassup');
// done();
// })
// it('trying stuff', () => {
// console.log(clientZeroResponses, clientOneResponses);
// })
});