Skip to content

Commit 423d8e1

Browse files
committed
Done with the code
1 parent 63f8ec0 commit 423d8e1

File tree

11 files changed

+62
-39
lines changed

11 files changed

+62
-39
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
"version": "1.0.0",
44
"description": "This is an experiment to compare HTTP vs WebSockets performance using `Nodejs client` <==> `Python server`",
55
"scripts": {
6+
"postinstall": "pip install -r requirements.txt",
67
"http-client": "babel-node src/clients/http/http_client.js",
78
"axios-client": "babel-node src/clients/http/axios_client.js",
89
"fetch-client": "babel-node src/clients/http/fetch_client.js",

requirements.txt

Lines changed: 5 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,9 @@
11
Flask==1.1.2
2-
Flask-SocketIO==4.3.1
3-
gevent-socketio==0.3.6
4-
gevent-websocket==0.10.1
5-
eventlet==0.27.0
6-
websockets==8.1
72
fastapi==0.61.1
8-
pydantic==1.6.1
9-
uvicorn==0.11.3
3+
uvicorn==0.12.0
104
pyramid==1.10.4
115
waitress==1.4.4
12-
tornado==6.0.4
6+
tornado==6.0.4
7+
Flask-SocketIO==4.3.1
8+
eventlet==0.28.0
9+
websockets==8.1

src/clients/http/axios_client.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import axios from 'axios'
22
import { host, port, httpApi, iters } from '../config'
33
import PerformanceTimer from '../PerformanceTimer'
4-
import { randomName, log, logConnecting, logIterations } from '../utils'
4+
import { randomName, log, logError, logConnecting, logIterations } from '../utils'
55

66
export async function runTest() {
77
logConnecting('Axios', `http://${host}:${port}`)
@@ -18,14 +18,14 @@ export async function runTest() {
1818
const { greeting } = response.data
1919

2020
if (--i === 0) {
21-
console.log(`Last greeting: ${greeting}`)
21+
log(`Last greeting: ${greeting}`)
2222
return
2323
}
2424

2525
await asyncLoop()
2626
})()
2727
} catch (err) {
28-
log(`Error: ${err}`)
28+
logError(err)
2929
}
3030

3131
timer.end()

src/clients/http/fetch_client.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import fetch from 'node-fetch'
22
import { host, port, httpApi, iters } from '../config'
33
import PerformanceTimer from '../PerformanceTimer'
4-
import { randomName, logConnecting, logIterations } from '../utils'
4+
import { randomName, log, logError, logConnecting, logIterations } from '../utils'
55

66
const requestInit = {
77
method: 'POST',
@@ -24,14 +24,14 @@ export async function runTest() {
2424
const { greeting } = data
2525

2626
if (--i === 0) {
27-
console.log(`Last greeting: ${greeting}`)
27+
log(`Last greeting: ${greeting}`)
2828
return
2929
}
3030

3131
await asyncLoop()
3232
})()
3333
} catch (err) {
34-
log(`Error: ${err}`)
34+
logError(err)
3535
}
3636

3737
timer.end()

src/clients/http/http_client.js

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import http from 'http'
22
import { host, port, iters } from '../config'
33
import PerformanceTimer from '../PerformanceTimer'
4-
import { Deferred, randomName, logConnecting, logIterations } from '../utils'
4+
import { Deferred, randomName, log, logError, logConnecting, logIterations } from '../utils'
55

66
async function request(reqOptions, postData) {
77
const deferred = new Deferred() // Promise.defer() => not supported
@@ -20,10 +20,7 @@ async function request(reqOptions, postData) {
2020

2121
})
2222

23-
req.on('error', err => {
24-
console.log(err)
25-
deferred.reject(err)
26-
})
23+
req.on('error', err => deferred.reject(err))
2724

2825
req.write(postData)
2926
req.end()
@@ -54,14 +51,14 @@ export async function runTest() {
5451
const { greeting } = data
5552

5653
if (--i === 0) {
57-
console.log(`Last greeting: ${greeting}`)
54+
log(`Last greeting: ${greeting}`)
5855
return
5956
}
6057

6158
await asyncLoop()
6259
})()
6360
} catch (err) {
64-
log(`Error: ${err}`)
61+
logError(err)
6562
}
6663

6764
timer.end()

src/clients/http/superagent_client.js

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import superagent from 'superagent'
22
import { host, port, httpApi, iters } from '../config'
33
import PerformanceTimer from '../PerformanceTimer'
4-
import { randomName, logConnecting, logIterations } from '../utils'
4+
import { randomName, log, logError, logConnecting, logIterations } from '../utils'
55

66
export async function runTest() {
77
logConnecting('SuperAgent', `http://${host}:${port}`)
@@ -20,14 +20,14 @@ export async function runTest() {
2020
const { greeting } = response.body
2121

2222
if (--i === 0) {
23-
console.log(`Last greeting: ${greeting}`)
23+
log(`Last greeting: ${greeting}`)
2424
return
2525
}
2626

2727
await asyncLoop()
2828
})()
2929
} catch (err) {
30-
log(`Error: ${err}`)
30+
logError(err)
3131
}
3232

3333
timer.end()

src/clients/socketio/socketio_client.js

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,15 @@
33
import io from 'socket.io-client'
44
import { host, port, httpApi, iters } from '../config'
55
import PerformanceTimer from '../PerformanceTimer'
6-
import { Deferred, randomName, createRequester, logConnecting, logIterations } from '../utils'
6+
import {
7+
Deferred,
8+
randomName,
9+
createRequester,
10+
log,
11+
logError,
12+
logConnecting,
13+
logIterations
14+
} from '../utils'
715

816
async function runTest() {
917
logConnecting('SocketIO', `http://${host}:${port}`)
@@ -30,7 +38,7 @@ async function runTest() {
3038
const { greeting } = data
3139

3240
if (--i === 0) {
33-
console.log(`Last greeting: ${greeting}`)
41+
log(`Last greeting: ${greeting}`)
3442
return
3543
}
3644

@@ -41,7 +49,7 @@ async function runTest() {
4149
socket.close()
4250

4351
} catch(err) {
44-
console.error('Error connecting:', err)
52+
logError(err)
4553
}
4654
}
4755

src/clients/utils.js

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -53,5 +53,9 @@ export function logConnecting(client, url) {
5353
}
5454

5555
export function logIterations(iters) {
56-
log(`Running test with ${chalk.cyan(`${iters} iterations`)}`)
56+
log(`Running test with ${chalk.cyan(iters.toLocaleString())} iterations`)
57+
}
58+
59+
export function logError(err) {
60+
log(chalk.red(`${err}`))
5761
}

src/clients/ws/websocket_client.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,18 @@
33
import { client as WebSocketClient} from 'websocket'
44
import { host, port, wsApi, iters } from '../config'
55
import PerformanceTimer from '../PerformanceTimer'
6-
import { Deferred, createRequester, randomName } from '../utils'
6+
import {
7+
Deferred,
8+
randomName,
9+
createRequester,
10+
log,
11+
logError,
12+
logConnecting,
13+
logIterations
14+
} from '../utils'
715

816
async function runTest() {
9-
console.log(`websocket client connecting to ws://${host}:${port}`)
17+
logConnecting('Websocket', `ws://${host}:${port}`)
1018

1119
const timer = new PerformanceTimer()
1220
const connect = new Deferred()
@@ -20,7 +28,7 @@ async function runTest() {
2028
try {
2129
const connection = await connect.promise
2230

23-
console.log(`Running test with ${iters} iterations...`)
31+
logIterations(iters)
2432

2533
const requester = createRequester(data => connection.sendUTF(data))
2634
connection.on('message', message => requester.incoming.resolve(message))
@@ -33,7 +41,7 @@ async function runTest() {
3341
const { greeting } = data
3442

3543
if (--i === 0) {
36-
console.log(`Last greeting: ${greeting}`)
44+
log(`Last greeting: ${greeting}`)
3745
return
3846
}
3947

@@ -46,7 +54,7 @@ async function runTest() {
4654
connection.close(1000, 'Done testing')
4755

4856
} catch(err) {
49-
console.error('Error connecting:', err)
57+
logError(err)
5058
}
5159
}
5260

src/clients/ws/ws_client.js

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,18 @@
33
import WebSocket from 'ws'
44
import { host, port, wsApi, iters } from '../config'
55
import PerformanceTimer from '../PerformanceTimer'
6-
import { Deferred, createRequester, randomName } from '../utils'
6+
import {
7+
Deferred,
8+
randomName,
9+
createRequester,
10+
log,
11+
logError,
12+
logConnecting,
13+
logIterations
14+
} from '../utils'
715

816
async function runTest() {
9-
console.log(`ws client connecting to ws://${host}:${port}`)
17+
logConnecting('WS', `ws://${host}:${port}`)
1018

1119
const timer = new PerformanceTimer()
1220
const connect = new Deferred()
@@ -18,7 +26,7 @@ async function runTest() {
1826
try {
1927
await connect.promise
2028

21-
console.log(`Running test with ${iters} iterations...`)
29+
logIterations(iters)
2230

2331
const requester = createRequester(data => ws.send(data))
2432
ws.on('message', message => requester.incoming.resolve(message))
@@ -31,7 +39,7 @@ async function runTest() {
3139
const { greeting } = data
3240

3341
if (--i === 0) {
34-
console.log(`Last greeting: ${greeting}`)
42+
log(`Last greeting: ${greeting}`)
3543
return
3644
}
3745

@@ -42,7 +50,7 @@ async function runTest() {
4250
ws.terminate()
4351

4452
} catch(err) {
45-
console.error('Error connecting:', err)
53+
logError(err)
4654
}
4755
}
4856

src/servers/socketio/flask-socketio_server.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,7 @@ def greeting(data):
1515
send({ 'greeting': greeting })
1616

1717
def run_test():
18-
print('Server starting at: ' + 'ws://{}:{}'.format(host, port))
18+
print('Server starting at: ' + 'http://{}:{}'.format(host, port))
1919
socketio.run(app, host=host, port=port)
2020

2121
if __name__ == '__main__':

0 commit comments

Comments
 (0)