Skip to content

Commit 77789dc

Browse files
committed
Some more work on ws
1 parent c5c0de1 commit 77789dc

File tree

7 files changed

+46
-84
lines changed

7 files changed

+46
-84
lines changed

src/clients/utils.js

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,4 +25,18 @@ export class Deferred {
2525
this.reject = reject
2626
})
2727
}
28+
}
29+
30+
export function createRequester(sender) {
31+
const requester = {
32+
incoming: null,
33+
greeting(data) {
34+
// new incoming message on the way
35+
const incoming = requester.incoming = new Deferred()
36+
sender(data)
37+
return incoming.promise
38+
}
39+
}
40+
41+
return requester
2842
}

src/clients/ws/socketio_client.js

Lines changed: 4 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,30 +1,16 @@
11
#!/usr/bin/env node
22

33
import io from 'socket.io-client'
4-
import { host, port, wsApi, iters } from '../config'
4+
import { host, port, httpApi, iters } from '../config'
55
import PerformanceTimer from '../PerformanceTimer'
6-
import { Deferred, randomName } from '../utils'
7-
8-
function createRequester(socket) {
9-
const requester = {
10-
incoming: null,
11-
greeting(data) {
12-
// new incoming message on the way
13-
const incoming = requester.incoming = new Deferred()
14-
socket.send(data)
15-
return incoming.promise
16-
}
17-
}
18-
19-
return requester
20-
}
6+
import { Deferred, randomName, createRequester } from '../utils'
217

228
async function runTest() {
239
console.log(`SocketIO client connecting to http://${host}:${port}`)
2410

2511
const timer = new PerformanceTimer()
2612
const connect = new Deferred()
27-
const socket = io(wsApi, { transports: ['websocket'] })
13+
const socket = io(httpApi, { transports: ['websocket'] })
2814

2915
socket.on('connect', () => connect.resolve())
3016
socket.on('connect_error', err => connect.reject(err))
@@ -34,8 +20,7 @@ async function runTest() {
3420

3521
console.log(`Running test with ${iters} iterations...`)
3622

37-
const requester = createRequester(socket)
38-
23+
const requester = createRequester(data => socket.send(data))
3924
socket.on('message', data => requester.incoming.resolve(data))
4025

4126
let i = iters

src/clients/ws/websocket_client.js

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,7 @@
33
import { client as WebSocketClient} from 'websocket'
44
import { host, port, wsApi, iters } from '../config'
55
import PerformanceTimer from '../PerformanceTimer'
6-
import { Deferred, randomName } from '../utils'
7-
8-
function createRequester(connection) {
9-
const requester = {
10-
incoming: null,
11-
greeting(data) {
12-
// new incoming message on the way
13-
const incoming = requester.incoming = new Deferred()
14-
connection.sendUTF(JSON.stringify(data))
15-
return incoming.promise
16-
}
17-
}
18-
19-
return requester
20-
}
6+
import { Deferred, createRequester, randomName } from '../utils'
217

228
async function runTest() {
239
console.log(`websocket client connecting to ws://${host}:${port}/greeting`)
@@ -36,13 +22,12 @@ async function runTest() {
3622

3723
console.log(`Running test with ${iters} iterations...`)
3824

39-
const requester = createRequester(connection)
40-
25+
const requester = createRequester(data => connection.sendUTF(data))
4126
connection.on('message', message => requester.incoming.resolve(message))
4227

4328
let i = iters
4429
await (async function asyncLoop() {
45-
const sendData = { name: randomName() }
30+
const sendData = JSON.stringify({ name: randomName() })
4631
const message = await requester.greeting(sendData)
4732
const data = JSON.parse(message.utf8Data)
4833
const { greeting } = data

src/clients/ws/ws_client.js

Lines changed: 3 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -3,21 +3,7 @@
33
import WebSocket from 'ws'
44
import { host, port, wsApi, iters } from '../config'
55
import PerformanceTimer from '../PerformanceTimer'
6-
import { Deferred, randomName } from '../utils'
7-
8-
function createRequester(ws) {
9-
const requester = {
10-
incoming: null,
11-
greeting(data) {
12-
// new incoming message on the way
13-
const incoming = requester.incoming = new Deferred()
14-
ws.send(JSON.stringify(data))
15-
return incoming.promise
16-
}
17-
}
18-
19-
return requester
20-
}
6+
import { Deferred, createRequester, randomName } from '../utils'
217

228
async function runTest() {
239
console.log(`ws client connecting to ws://${host}:${port}/greeting`)
@@ -34,13 +20,12 @@ async function runTest() {
3420

3521
console.log(`Running test with ${iters} iterations...`)
3622

37-
const requester = createRequester(ws)
38-
23+
const requester = createRequester(data => ws.send(data))
3924
ws.on('message', message => requester.incoming.resolve(message))
4025

4126
let i = iters
4227
await (async function asyncLoop() {
43-
const sendData = { name: randomName() }
28+
const sendData = JSON.stringify({ name: randomName() })
4429
const message = await requester.greeting(sendData)
4530
const data = JSON.parse(message)
4631
const { greeting } = data

src/servers/ws/flask-socketio_server.py

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,10 @@
11
#!/usr/bin/env python
22

3-
import logging
43
from flask import Flask, render_template
54
from flask_socketio import SocketIO, send
65
from src.servers.config import host, port
76
from src.servers.utils import random_greeting
87

9-
# log = logging.getLogger('werkzeug')
10-
# log.setLevel(logging.ERROR)
11-
128
app = Flask(__name__)
139
app.config['SECRET_KEY'] = 'secret!'
1410
socketio = SocketIO(app)

src/servers/ws/socketio_server.py

100644100755
Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,26 +3,27 @@
33
import eventlet
44
import socketio
55
import json
6-
import argparse
6+
from src.servers.config import host, port
7+
from src.servers.utils import random_greeting
78

89
sio = socketio.Server()
910
app = socketio.WSGIApp(sio)
1011

1112
# @sio.on('message', namespace='/greeting')
1213
# def greeting(sid, data):
13-
# sio.send({'greeting': data['name']}, namespace='/greeting')
14+
# greeting = random_greeting(data['name'])
15+
# sio.send({ 'greeting': greeting }, namespace='/greeting')
1416

1517
class GreetingNamespace(socketio.Namespace):
1618
def on_message(self, sid, data):
17-
self.send({'greeting': data['name']})
19+
greeting = random_greeting(data['name'])
20+
self.send({ 'greeting': greeting })
1821

1922
sio.register_namespace(GreetingNamespace('/greeting'))
2023

21-
if __name__ == '__main__':
22-
parser = argparse.ArgumentParser()
23-
parser.add_argument('-l', '--host', default='0.0.0.0')
24-
parser.add_argument('-p', '--port', default=5000, type=int)
24+
def run_test():
25+
# print('Server starting at: ' + 'ws://{}:{}'.format(host, port))
26+
eventlet.wsgi.server(eventlet.listen((host, port)), app)
2527

26-
args = parser.parse_args()
27-
print('Server starting at: ' + 'ws://{}:{}'.format(args.host, args.port))
28-
eventlet.wsgi.server(eventlet.listen((args.host, args.port)), app)
28+
if __name__ == '__main__':
29+
run_test()

src/servers/ws/websockets_server.py

100644100755
Lines changed: 11 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -3,30 +3,26 @@
33
import asyncio
44
import websockets
55
import json
6-
import argparse
7-
import logging
8-
9-
logger = logging.getLogger('websockets.server')
10-
logger.setLevel(logging.ERROR)
6+
from src.servers.config import host, port
7+
from src.servers.utils import random_greeting
118

129
async def greeting(websocket, path):
1310
if path == '/greeting':
1411
while True:
1512
try:
1613
message = await websocket.recv()
1714
data = json.loads(message)
18-
await websocket.send(json.dumps({ 'greeting': data['name'] }))
15+
greeting = random_greeting(data['name'])
16+
await websocket.send(json.dumps({ 'greeting': greeting }))
1917
except:
2018
await websocket.close()
2119
break
2220

23-
if __name__ == '__main__':
24-
parser = argparse.ArgumentParser()
25-
parser.add_argument('-l', '--host', default='0.0.0.0')
26-
parser.add_argument('-p', '--port', default=5005, type=int)
27-
28-
args = parser.parse_args()
29-
print('Server starting at: ' + 'ws://{}:{}'.format(args.host, args.port))
30-
start_server = websockets.serve(greeting, host=args.host, port=args.port)
21+
def run_test():
22+
print('Server starting at: ' + 'ws://{}:{}'.format(host, port))
23+
start_server = websockets.serve(greeting, host=host, port=port)
3124
asyncio.get_event_loop().run_until_complete(start_server)
32-
asyncio.get_event_loop().run_forever()
25+
asyncio.get_event_loop().run_forever()
26+
27+
if __name__ == '__main__':
28+
run_test()

0 commit comments

Comments
 (0)