Created
March 10, 2018 16:15
-
-
Save s-c-p/8dedecec308091b2e24cd1b176ea2ca7 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import websockets as faker |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<!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> |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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