aboutsummaryrefslogtreecommitdiffstats
path: root/webapp
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--templates/index.html (renamed from webapp/templates/index.html)48
-rw-r--r--webapp/rmq.py48
-rw-r--r--webapp/webapp.py39
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)
-
-def index():
- return render_template('index.html')
-
-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()