Skip to content

Instantly share code, notes, and snippets.

@s-c-p
Created March 10, 2018 16:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save s-c-p/8dedecec308091b2e24cd1b176ea2ca7 to your computer and use it in GitHub Desktop.
Save s-c-p/8dedecec308091b2e24cd1b176ea2ca7 to your computer and use it in GitHub Desktop.
import websockets as faker
<!DOCTYPE html>
<html>
<head>
<title>WebSocket demo</title>
</head>
<body>
<div class=view></div>
<div class=subs></div>
</body>
<script>
var wsView = new WebSocket("ws://127.0.0.1:5678/"),
messages = document.createElement('ul');
wsView.onmessage = function (event) {
var messages = document.getElementsByTagName('ul')[0],
message = document.createElement('li'),
content = document.createTextNode(event.data);
message.appendChild(content);
messages.appendChild(message);
};
document.querySelector(".view").appendChild(messages);
var wsSubs = new WebSocket("ws://127.0.0.1:8765/"),
messages = document.createElement('ul');
wsSubs.onmessage = function (event) {
var messages = document.getElementsByTagName('ul')[0],
message = document.createElement('li'),
content = document.createTextNode(event.data);
message.appendChild(content);
messages.appendChild(message);
};
document.querySelector(".subs").appendChild(messages);
</script>
</html>
import websockets
import os
import time
import random
import asyncio
MIN_LIM = 0.05
MAX_LIM = 2
random.seed(os.urandom(512))
def mkRandom(size, min_lim=MIN_LIM, max_lim=MAX_LIM):
ans = list()
while len(ans) <= size:
x = random.random()*2
if x >= min_lim and x < max_lim:
ans.append(x)
else:
continue
return ans
times = {
'view': mkRandom(10),
'subs': mkRandom(10)
}
import pdb
async def sim_view(ws, prt):
while True:
try:
x = times['view'].pop()
except IndexError:
return 'view ends'
else:
msg = 'view spoke @ ' + str(time.time())
print(msg)
await ws.send(msg)
await asyncio.sleep(x)
async def sim_subs(ws, prt):
while True:
try:
x = times['subs'].pop()
except IndexError:
return 'subs ends'
else:
msg = 'subs spoke @ ' + str(time.time())
print(msg)
await ws.send(msg)
await asyncio.sleep(x)
view_server = websockets.serve(sim_view, '127.0.0.1', 5678)
subs_server = websockets.serve(sim_subs, '127.0.0.1', 8765)
ioloop = asyncio.get_event_loop()
ioloop.run_until_complete(view_server)
ioloop.run_until_complete(subs_server)
ioloop.run_forever()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment