d3.js - flask-socketio 和 d3 之间的数据握手
问题描述
我正在使用 flasks-socketio(server) 和 d3.js(client) 作为我的研究项目的一部分来开发实时应用程序,并且努力在服务器和 clinet 之间执行数据握手,并且它不工作并且对于 websockets 来说是新的. 请帮助我使用flask-io和d3的数据共享方法,谢谢。
输出截图: 输出
如果我在客户端分配数据值,可以从服务器端读取,但如果我在服务器端分配数据,客户端无法读取它。为什么 ?
服务器代码:
from flask import Flask, render_template
from flask_socketio import SocketIO, emit, send
import json, os
import pandas as pd
app = Flask(__name__)
app.config['SECRET KEY'] = 'help!'
socketio = SocketIO(app)
port = int(os.getenv('VCAP_APP_PORT', 2021))
# df = pd.read_csv("stocks.csv", usecols=['Symbol','Name','Sector','Price'])
# stocks = pd.DataFrame(data=df)
# print(stocks.head())
@app.route('/')
def index():
return render_template('demo.html')
@socketio.on('connect', namespace='/app')
def connect():
emit('check_connection', {'data': 'Connected'})
@socketio.on('sum', namespace='/app')
def sum(data):
result = data['numbers'][0] + data['numbers'][1]
# emit('sum_result', {'result': result})
return {'result': result}
@socketio.on('stocks', namespace='/app')
def send_data():
df = pd.read_csv("stocks.csv", usecols=['Symbol','Name','Sector','Price'])
data = pd.DataFrame(data=df)
# print(df.head())
emit ('stock_data', {'stock_data': data}, broadcast=True)
@socketio.on('disconnect', namespace='/app')
def disconnect():
print('Clinet disconnected!')
if __name__ == '__main__':
socketio.run(app, debug=True, port=port)
client_code:
<script src="https://d3js.org/d3.v5.min.js" charset="utf-8"></script>
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I=" crossorigin="anonymous"></script>
<script type="text/javascript" charset="utf-8">
const sio = io.connect('http://' + document.domain + ':' + location.port + '/app');
sio.on('check_connection', function(msg){
console.log(msg);
sio.emit('sum', {numbers: [1, 2]}, (result) => {
console.log(result);
});
});
sio.on('stock_data', (data) => {
const stockData = data;
console.log(stockData);
});
sio.on('disconnect', function(msg){
console.log(msg);
});
</script>
[1]: https://i.stack.imgur.com/lCNs9.png
解决方案
推荐阅读
- excel - 具有多个范围、单一标准的 COUNTIFS
- javascript - Materialize 表中的方形单元格
- ios - 离线查询数据的实现和功能-实时数据库
- c# - 如何在 c# wpf 中一次加载/保存多个文件?
- javascript - 允许用户仅使用一个 Lightning Web 组件实例
- c# - 使用 OPENJSON 将两个数组的对象插入 SQL 数据库
- excel - 通过 excel vba 实现的 IE 自动化失去了对新 URL 的关注
- java - 获取 JList 组件的问题
- java - 从客户端(Android-Mobile)向服务器(Python)发送消息
- c - 打印文件的特定行