Python 3.x Docker编写烧瓶系列
你好,我是docker的新手,我尝试将我的flask应用程序dockerize 当我从虚拟串行端口发送消息时,index.html文本区域中不显示串行消息。这是我的密码 dockerfile 标签名称=ise-4000版本=0.0.1 曝光5555 WORKDIR/app 加上/应用程序 复制模板/应用程序/模板 #使用pip: 运行python-mpip安装-r requirements.txt CMD[“python”,“app.py”] docker-compose.ymlPython 3.x Docker编写烧瓶系列,python-3.x,docker,flask,docker-compose,pyserial,Python 3.x,Docker,Flask,Docker Compose,Pyserial,你好,我是docker的新手,我尝试将我的flask应用程序dockerize 当我从虚拟串行端口发送消息时,index.html文本区域中不显示串行消息。这是我的密码 dockerfile 标签名称=ise-4000版本=0.0.1 曝光5555 WORKDIR/app 加上/应用程序 复制模板/应用程序/模板 #使用pip: 运行python-mpip安装-r requirements.txt CMD[“python”,“app.py”] docker-compose.yml versio
version: '2.1'
services:
ise-4000:
image: ise-4000
build: .
ports:
- 5555:5555
app.py
从烧瓶导入烧瓶,渲染\u模板
从flask_socketio导入socketio
app=烧瓶(名称)
app.config['SECRET_KEY']='mynameislaunglaung'
socketio=socketio(应用程序)
@应用程序路径(“/”)
def会话():
返回呈现模板('session.html')
收到def message(方法=['GET','POST']):
打印(“消息已收到!!”)
@socketio.on(“我的活动”)
def handle_my_custom_事件(json,方法=['GET','POST']):
打印('收到我的事件:',json)
emit('my response',json,callback=messageReceived)
@socketio.on('cleint send message')
def处理我的信息(信息):
打印(“消息数据:”,消息)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
运行(应用程序,主机='0.0.0.0',端口='5555')
session.html
{%extends“bootstrap/base.html”%}
{%block title%}ISE-4000{%endblock%}
{%block styles%}
{{super()}}
{%endblock%}
{%block scripts%}
{{super()}}
$(文档).ready(函数(){
var socket=io.connect('http://'+document.domain+':'+location.port);
console.log(document.domain+“:”+location.port);
socket.on('serial_message',函数(数据){
控制台日志(数据);
变量文本=数据['message'];
var$textarea=$(“#串行#u消息”);
$textarea.val($textarea.val()+text+'\n');
})
});
{%endblock%}
{%block content%}
接收串行消息
信息:
{%endblock%}
我的问题是虚拟端口在docker容器中不起作用,或者我的代码中出现了一些错误。我只是简单地看一下SocketIO文档,但我认为问题在于您的JS代码正在侦听一种名为
“serial\u message”
然而,你的Flask应用程序从来不会发出那种消息类型,只会发出“我的回应”
socketio.emit('my response'
如果希望数据在套接字上“流动”,则这两个字符串必须匹配
类似地,您在Python代码中的注释上放置了两个
@socketio.on,但没有显示任何事件类型(并且您拼写的客户端错误)
而methods=['GET','POST']
仅适用于具有与其关联的Flask路由的方法,而不适用于回调或socketio函数如果尝试使用socketio.run会怎么样(应用程序,host='0.0.0'
是的,我已经用host='0.0.0.0'
试过了。我是否需要更改docker-compose.yml。你的代码说端口是9999…你只公开了5555@cricket_007抱歉,我复制了错误的app.py文件,我使用5555运行了正确的端口。session.html呢?您的问题是显示index.html。。。在任何情况下,socket.on('serial\u message
)都需要以某种方式映射到Python正在发送的内容,但是那里没有一个字符串表示serial\u message
socketio.emit('my response'