Javascript 使用python中的WebSocket从表单中获取多个变量
刚刚开始学习WebSocket和python。现在我使用的是Socket IO,有一个非常基本的“从窗体中提取并将其返回”,但我需要能够从窗体中提取2+个变量,并在程序中使用它们。我所看到的初学者指南都只是一个变量,我正在努力找出它,可能需要一些帮助 我正在寻找表单中的第二个文本字段,并且能够在应用程序中获取变量。我假设它是{'data':message['data']}和{'data':message['data2']}的形式,例如,但只要我能得到值,这才是重要的 我现在所拥有的: index.htmlJavascript 使用python中的WebSocket从表单中获取多个变量,javascript,python,websocket,flask,socket.io,Javascript,Python,Websocket,Flask,Socket.io,刚刚开始学习WebSocket和python。现在我使用的是Socket IO,有一个非常基本的“从窗体中提取并将其返回”,但我需要能够从窗体中提取2+个变量,并在程序中使用它们。我所看到的初学者指南都只是一个变量,我正在努力找出它,可能需要一些帮助 我正在寻找表单中的第二个文本字段,并且能够在应用程序中获取变量。我假设它是{'data':message['data']}和{'data':message['data2']}的形式,例如,但只要我能得到值,这才是重要的 我现在所拥有的: index
<!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>
烧瓶冲击试验
$(文档).ready(函数(){
namespace='/test';//更改为空字符串以使用全局命名空间
var socket=io.connect('http://'+document.domain+':'+location.port+名称空间);
socket.on('connect',function(){
emit('my event',{data:'Connected…Waiting you…');
});
socket.on('my response',函数(msg){
$('#log').append('
'+msg.data);
});
$('form#emit').submit(函数(事件){
emit('my event',{data:$('#emit_data').val()});
返回false;
});
});
烧瓶冲击试验
发送:
收到:
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)
来自gevent导入monkey的
猴子
导入时间
从线程导入线程
从烧瓶导入烧瓶,渲染\u模板
从flask.ext.socketio导入socketio,发射
app=烧瓶(名称)
app.debug=True
app.config['SECRET\u KEY']='SECRET!'
socketio=socketio(应用程序)
线程=无
def background_thread():
“”“如何将服务器生成的事件发送到客户端的示例。”“”
计数=0
尽管如此:
时间。睡眠(60)
计数+=1
#“
收到了”#“+msg.count+”:“+msg.data
emit('my response',{'data':'Connection to server live'},namespace='/test')
@应用程序路径(“/”)
def index():
#启动每10秒发送一次响应的线程
全局线程
如果线程为“无”:
线程=线程(目标=背景线程)
thread.start()
返回渲染模板('index.html')
@on('my event',namespace='/test')
def测试_消息(消息):
打印消息
发出('my response',{'data':消息['data']})
@on('connect',namespace='/test')
def测试_连接():
emit('my response',{'data':'正在尝试连接到服务器…'))
@on('disconnect',命名空间='/test')
def测试_断开()
打印('客户端已断开连接')
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
socketio.run(应用程序)
我正在寻找表单中的第二个文本字段,并且能够在应用程序中获取变量。我假设它将以{'data':message['data']}和{'data':message['data2']}的形式出现,但只要我能得到值,这才是最重要的。只要发送您想要的变量就行了:
socket.emit('my event', {data: $('#emit_data').val(), data2: $('#emit_data2').val()});
数据
只是变量的示例名称。您可以使用任意数量和名称的字典键