diff options
Diffstat (limited to '')
| -rw-r--r-- | templates/index.html (renamed from webapp/templates/index.html) | 48 | ||||
| -rw-r--r-- | webapp/rmq.py | 48 | ||||
| -rw-r--r-- | webapp/webapp.py | 39 |
3 files changed, 38 insertions, 97 deletions
diff --git a/webapp/templates/index.html b/templates/index.html index f2213ff..d0b0630 100644 --- a/webapp/templates/index.html +++ b/templates/index.html @@ -1,16 +1,17 @@ <!DOCTYPE html> <meta charset="utf-8" /> -<title>WebSocket Test</title> +<title>snekboxweb</title> <script language="javascript" type="text/javascript"> +let _ready = false var output; function init(){ output = document.getElementById("output"); - testWebSocket(); + websocketHandler(); } -function testWebSocket(){ +function websocketHandler(){ var here = window.location.host; var wsUri = `ws://${here}/ws`; websocket = new WebSocket(wsUri); @@ -21,25 +22,47 @@ function testWebSocket(){ } function onOpen(evt){ - writeToScreen("CONNECTED"); + _ready = true + console.log("CONNECTED"); } function onClose(evt){ - writeToScreen("DISCONNECTED"); + _ready = false + console.log("DISCONNECTED"); } function onMessage(evt){ writeToScreen('<span style="color: blue;">RESPONSE: ' + evt.data+'</span>'); +} + +function exit(){ websocket.close(); } function onError(evt){ + _ready = false writeToScreen('<span style="color: red;">ERROR:</span> ' + evt.data); } -function sendMessage(message){ - writeToScreen("SENT: " + message); - websocket.send(message); +function sendMessage(msg){ + waitForSocketConnection(function(){ + websocket.send(msg); + }); + console.log("sent message "+msg) +} + +function waitForSocketConnection(callback){ + setTimeout( + function () { + if (_ready === true) { + if(callback != null){ + callback();} + return; + } + else { + waitForSocketConnection(callback);} + + }, 500); // milliseconds } function writeToScreen(message){ @@ -58,7 +81,12 @@ window.addEventListener("load", init, false); </script> -<input type="text" id="field1" value="print('fsdf')"><br> +<textarea rows="4" cols="50" type="text" id="field1"> +def sum(a,b): + return a+b +print( sum(1,2) ) +</textarea> +<br> <button onclick="sendFromInput()">Send</button> - +<button onclick="exit()">disconnect from websocket</button> <div id="output"></div> diff --git a/webapp/rmq.py b/webapp/rmq.py deleted file mode 100644 index 80d418a..0000000 --- a/webapp/rmq.py +++ /dev/null @@ -1,48 +0,0 @@ -import os -import pika - -USERNAME = 'guest' -PASSWORD = 'guest' -HOST = os.environ.get('RMQ_HOST', '172.17.0.2') -PORT = 5672 -EXCHANGE = 'exchange' -EXCHANGE_TYPE = 'direct' -QUEUE = 'text' -ROUTING_KEY = 'bacon' - -try: - import docker - client = docker.from_env() - containers = client.containers.get('snekbox_pdrmq_1') - print("Attempting to get rabbitmq host automatically") - HOST = list(containers.attrs.get('NetworkSettings').get('Networks').values())[0]['IPAddress'] - print(f"found {HOST}") -except: - pass - -def send(message): - credentials = pika.PlainCredentials(USERNAME, PASSWORD) - connection = pika.BlockingConnection(pika.ConnectionParameters(HOST, PORT, '/', credentials)) - properties = pika.BasicProperties(content_type='text/plain', delivery_mode=1) - - channel = connection.channel() - channel.queue_declare(queue=QUEUE, durable=False) - channel.exchange_declare(exchange=EXCHANGE, exchange_type=EXCHANGE_TYPE) - channel.queue_bind(exchange=EXCHANGE, queue=QUEUE, routing_key=ROUTING_KEY) - - result = channel.basic_publish( - exchange=EXCHANGE, - routing_key=ROUTING_KEY, - body=message, - properties=properties - ) - - if result: - print(f"""Connecting to\nhost: {HOST}\nport: {PORT}\nexchange: {EXCHANGE}\nqueue: {QUEUE}""", flush=True) - print(f"Sent: '{message}'") - else: - print("not delivered") - - connection.close() - -#send('print("bacon is delicious")') diff --git a/webapp/webapp.py b/webapp/webapp.py deleted file mode 100644 index 676fc27..0000000 --- a/webapp/webapp.py +++ /dev/null @@ -1,39 +0,0 @@ -import traceback - -from rmq import send as rmq_send -from flask import Flask -from flask import render_template -from flask_sockets import Sockets - -app = Flask(__name__) -sockets = Sockets(app) - [email protected]('/') -def index(): - return render_template('index.html') - [email protected]('/ws') -def websocket_route(ws): - try: - while not ws.closed: - message = ws.receive() - - if not message: - continue - print(f"received '{message}'") - - rmq_send(message) - - except: - print(traceback.format_exec()) - - finally: - if not ws.closed: - ws.close() - -if __name__ == '__main__': - #app.run(host='0.0.0.0', port=5000, debug=True) - from gevent import pywsgi - from geventwebsocket.handler import WebSocketHandler - server = pywsgi.WSGIServer(('0.0.0.0', 5000), app, handler_class=WebSocketHandler) - server.serve_forever() |