我正在尝试确保网站的浏览器已同步。特别是在我的烧瓶应用程序中使用套接字的文本区域。我希望能够确保人们在大约同一时间观看相同的内容。它不必是立即的。如果有人有比每次按下一个键更新插座更好的解决方案?
我真正的问题是,为什么发射器被触发时套接字不在后端打印一条消息?
以下是相关代码:
from werkzeug import secure_filename
from flask import Flask, render_template, jsonify, make_response, request
import json
import string
import sys
from io import StringIO # Python3sdf
import OSC
import time
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy.ext import mutable
import os
from flask_socketio import SocketIO, emit
project_dir = os.path.dirname(os.path.abspath(__file__))
database_file = "sqlite:///{}".format(os.path.join(project_dir, "music.db"))
app = Flask(__name__)
socketio = SocketIO(app)
app.config["SQLALCHEMY_DATABASE_URI"] = database_file
@socketio.on('value changed')
def value_changed(message):
print(message)
@app.route('/')
def my_form():
song_query = SongClass.query.all()
if song_query[-1]:
song = str(song_query[-1])
else:
song = " "
if song_query[-2]:
song2 = str(song_query[-2])
else:
song2 = " "
return render_template('index.html', song=song, song2=song2)
if __name__ == "__main__":
socketio.run(app, host='0.0.0.0', port = 5002)
这是index.html中的相关代码:
<!DOCTYPE html>
<html>
<head>
<title>CodeMirror</title>
<script type="text/javascript" src="js/jquery.min.js"></script>
<script type="text/javascript" src="plugin/codemirror/lib/codemirror.js"></script>
<script type="text/javascript" src="js/default.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.2/jquery.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(){
var socket = io.connect();
// the socket.io documentation recommends sending an explicit package upon connection
socket.on('connect', function() {
socket.emit('connect', {data: 'I\'m connected!'});
});
$('#song').on('change keyup paste', function(event) {
alert("blah");
socket.emit('value changed',{data: $('#song').val()});
return false;
});
});
<div style="float:left;">
<textarea rows="40" cols="100" name="song" id="song">{{song}}</textarea>
</html>
我从jquery收到警报,但后端没有任何反应。即我看不到任何信息。
答案 0 :(得分:0)
您正在使用Socket.IO JavaScript客户端的旧版本。使用2.x版本,我认为您会没事的。