我已经创建了一个小的网络应用程序,并想使用socketio。
我在javascript中使用了socket.io v.3,在flask.socketio v 4.0.0和python-socketio v 5.0.4中使用了python v 5.0.1
我可以成功地将事件从客户端发送到服务器,尽管我无法与之通信。
我的烧瓶代码是:
@socketio.on('submit')
def submit(data):
print('received message: button click')
print(data)
emit('submit',{'complete': 66, 'stage': 'deploying groups'})
print('data send')我的javascript看起来像这样:
var socket = io();
socket.on('*', function(data) {
document.getElementById("Project Name").value = 'test'
});
socket.on('submit', function(data) {
document.getElementById("Project Name").value = 'test'
});服务器端代码执行,我在flask控制台日志中看到数据发送,尽管客户端从来没有做过任何事情。我尝试在控制台中运行该命令,并成功地设置了字段的名称。我还尝试过将socket.on定义复制粘贴到控制台中,但也不起作用。
如果我在控制台中运行此命令,我会看到已定义的函数:
socket.listeners("submit");我期望"project name“的值更新为test。
发布于 2021-03-08 16:55:43
我找到了我的问题所在,我有另一个函数,它也创建了一个套接字。
我发现你应该在代码中只运行一次var socket = io();,而不是每个函数运行一次。
我的问题是,我开始进行app->后端工作,并在尝试返回某些东西时卡住了,因为我在收到后端的应答之前重新启动了套接字。
TLDR;每页只定义一次套接字,而不是每个函数一次。再次定义它将重置您的会话。
https://stackoverflow.com/questions/66332082
复制相似问题