From 329f91c7cd86114bc60a0af6ecb2dffe29b69521 Mon Sep 17 00:00:00 2001 From: simonszc Date: Tue, 17 May 2016 12:37:04 -0700 Subject: [PATCH 1/2] should work --- package.json | 26 ++++++++++++++++++ server.js | 18 +++++++++++++ test/test.js | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 119 insertions(+) create mode 100644 package.json create mode 100644 server.js create mode 100644 test/test.js diff --git a/package.json b/package.json new file mode 100644 index 0000000..52f4d91 --- /dev/null +++ b/package.json @@ -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" + } +} diff --git a/server.js b/server.js new file mode 100644 index 0000000..a8dcf87 --- /dev/null +++ b/server.js @@ -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') +}) diff --git a/test/test.js b/test/test.js new file mode 100644 index 0000000..b4757c9 --- /dev/null +++ b/test/test.js @@ -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); + // }) +}); From 05b4d447acde991b5ceed933f6674853083f8b9a Mon Sep 17 00:00:00 2001 From: simonszc Date: Thu, 19 May 2016 13:03:02 -0700 Subject: [PATCH 2/2] moved inside a folder with my name in it --- zach/package.json | 26 +++++++++++++ zach/server.js | 19 ++++++++++ zach/test/test.js | 97 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 142 insertions(+) create mode 100644 zach/package.json create mode 100644 zach/server.js create mode 100644 zach/test/test.js diff --git a/zach/package.json b/zach/package.json new file mode 100644 index 0000000..52f4d91 --- /dev/null +++ b/zach/package.json @@ -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" + } +} diff --git a/zach/server.js b/zach/server.js new file mode 100644 index 0000000..f8c94b0 --- /dev/null +++ b/zach/server.js @@ -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') +}) diff --git a/zach/test/test.js b/zach/test/test.js new file mode 100644 index 0000000..7648d73 --- /dev/null +++ b/zach/test/test.js @@ -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); + // }) +});