2014-09-28 16 views
0

剛開始學習websockets和python。現在我使用的是Socket-IO,並且具有非常基本的「從窗體拉出並回顯出來」,但是我需要能夠從表單中提取2+個變量並在程序中使用它們。我已經看到的初學者指南都只是一個變量,我努力想出來,可以使用一些幫助。從python中的websockets獲取多個變量

我正在尋找窗體中的第二個文本字段,並能夠獲取應用程序中的變量。我假設它的形式是{'data':message ['data']}和{'data':message ['data2']},但只要我可以得到這些值,那就是什麼重要。

我現在所擁有的:

的index.html

<!DOCTYPE HTML> 
<html> 
<head> 
    <title>Flask-SocketIO Test</title> 
    <script type="text/javascript" src="//code.jquery.com/jquery-1.4.2.min.js"></script> 
    <script type="text/javascript" src="//cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js"></script> 
    <script type="text/javascript" charset="utf-8"> 
     $(document).ready(function(){ 
      namespace = '/test'; // change to an empty string to use the global namespace 

      var socket = io.connect('http://' + document.domain + ':' + location.port + namespace); 
      socket.on('connect', function() { 
       socket.emit('my event', {data: 'Connected... Waiting for you...'}); 
      }); 


      socket.on('my response', function(msg) { 
       $('#log').append('<br>' + msg.data); 
      }); 


      $('form#emit').submit(function(event) { 
       socket.emit('my event', {data: $('#emit_data').val()}); 
       return false; 
      }); 

     }); 
    </script> 
</head> 
<body> 
    <h1>Flask-SocketIO Test</h1> 
    <h2>Send:</h2> 
    <form id="emit" method='POST' action='#'> 
     <input type="text" name="emit_data" id="emit_data" placeholder="Message"><br> 
     <input type="submit" value="Echo"></div> 
    </form> 
    <h2>Receive:</h2> 
    <div id="log"></div> 
</body> 
</html> 

app.py

from gevent import monkey 
monkey.patch_all() 

import time 
from threading import Thread 
from flask import Flask, render_template 
from flask.ext.socketio import SocketIO, emit 

app = Flask(__name__) 
app.debug = True 
app.config['SECRET_KEY'] = 'secret!' 
socketio = SocketIO(app) 
thread = None 

def background_thread(): 
    """Example of how to send server generated events to clients.""" 
    count = 0 
    while True: 
     time.sleep(60) 
     count += 1 
     #'<br>Received #' + msg.count + ': ' + msg.data 
     socketio.emit('my response', {'data': 'Connection to server still alive'}, namespace='/test') 

@app.route('/') 
def index(): 
    #kick off thread that every 10 seconds sends a response 
    global thread 
    if thread is None: 
     thread = Thread(target=background_thread) 
     thread.start() 
    return render_template('index.html') 

@socketio.on('my event', namespace='/test') 
def test_message(message): 
    print message 
    emit('my response', {'data': message['data']}) 

@socketio.on('connect', namespace='/test') 
def test_connect(): 
    emit('my response', {'data': 'Trying to connect to server...'}) 

@socketio.on('disconnect', namespace='/test') 
def test_disconnect(): 
    print('Client disconnected') 

if __name__ == '__main__': 
    socketio.run(app) 

進出口尋找在形式的第二個文本框,並能夠得到變量在應用程序中。我假設它的形式是{'data':message ['data']}和{'data':message ['data2']},但只要我可以得到這些值,那就是什麼重要。

回答

1

,只要你想只要給儘可能多的變量:

socket.emit('my event', {data: $('#emit_data').val(), data2: $('#emit_data2').val()}); 

data只對變量的例子名。您可以使用任何數量和名稱的字典鍵。

+0

讓我知道我需要的地方,謝謝! – user1601716 2014-09-28 17:42:59