python - 无法使用flask-socketio在聊天应用程序的HTML页面中显示消息
问题描述
我正在使用 flask-socketio 制作一个烧瓶聊天应用程序。当我单击发送按钮时,屏幕上不会显示任何消息。我已经参考了 flask-socketio 文档来设置所有内容。有人可以在这里帮助我吗?
mainapp.py 片段
from flask_socketio import SocketIO, send, emit
app = Flask(__name__)
app.secret_key = 'replace later'
# Initialise Flask-Socketio
socketio = SocketIO(app)
@app.route("/chat", methods=['GET', 'POST'])
def chat():
return render_template('chat.html')
@socketio.on('message')
def message(data):
#print(f"\n{data}\n")
send(data)
chat.html 片段
<div id="display-message-section">
</div>
<!-- Input area -->
<div id="input-area">
<input type="text" id="user_message" placeholder="Type here..." autocomplete="off">
<button type="button" id="send_message">SEND</button>
</div>
<!-- SocketIO JS -->
<script src="//cdnjs.cloudflare.com/ajax/libs/socket.io/2.2.0/socket.io.js" integrity="sha256-yr4fRk/GU1ehYJPAs8P4JlTgu0Hdsp4ZKrx8bDEDC3I="
crossorigin="anonymous"></script>
<!-- Custom SocketIO JS -->
<script src="{{ url_for('static', filename='scripts/socketio.js') }}"></script>
socketio.js(在静态/脚本中)片段
document.addEventListener('DOMContentLoaded', () => {
var socket = io.connect('http://' + document.domain + ':' + location.port);
socket.on('connect', () => {
socket.send("I am connected");
});
socket.on('message', data =>{
const p = document.createElement('p');
const br = document.createElement('br');
p.innerHTML = data;
document.querySelector('#display-message-section').append(p);
});
document.querySelector('#send_message').onclick = ()=>{
socket.send(document.querySelector('#user_message').value);
}
})
解决方案
尝试清除 cookie 和缓存,现在一切正常。
推荐阅读
- javascript - 基于javascript中的两个属性获取数组中重复对象的列表
- c - Linux 驱动程序加载 - 在动态链接阶段解析函数名称
- docker - Docker Compose 与多个网络
- android - 在 Flutter 中捕获前台位置
- r - 在 Mac Catalina 上的 Jupyter 上使用 R:使安装全局可见不起作用
- symfony - 删除实体时如何删除file_upload(FileUploadType)上传的文件?
- css - Chrome 85 devtools 设备工具栏白框-窗口周围的阴影
- javascript - Ember 中的命名块
- python - PySpark to_json 丢失数组内结构的列名
- python - 如何通过一个 SeparableConv2D 传递多张图像?