javascript - Python Flask-socketio 工作,没有从 JS 客户端接收数据
问题描述
我正在尝试使用flask-socketio 和前端的javascript socket-io 库设置一个基本的网络套接字。前端成功注册连接。但是,在 python 控制台中,我的日志消息不起作用,并且没有迹象表明服务器正在响应我的请求。
我在连接时在控制台中得到的只是:
"GET /socket.io/?EIO=3&transport=polling&t=MJHl5WD HTTP/1.1" 200 -
127.0.0.1 - - [25/Jul/2018 09:58:58] "POST /socket.io/?EIO=3&transport=polling&t=MJHl5WQ&sid=b2a1f92c18e349c5a11df25e5001766c HTTP/1.1" 200 -
所以连接正在工作,但是,后端没有其他任何东西可以正常输出。
这是JS:
var socket=io('http://127.0.0.1:5000');
socket.on('connect',function(){
console.log("connected");
socket.emit('client_connected',{data:"testsend"});
});
socket.on('update',function(data){
console.log(data)
});
和蟒蛇:
import json
import urllib3
from bs4 import BeautifulSoup
from flask import Flask, jsonify, render_template, request
from flask_socketio import SocketIO, send, emit
app=Flask(__name__)
socketio= SocketIO(app)
if __name__ == '__main__':
socketio.run(app)
socketio.emit('update',{'data':"test"});
@socketio.on('client_connected')
def handle_client_connect_event(data):
print("connected")
print(str(data))
@socketio.on('disconnect')
def disconnected():
print('disconnected')
@socketio.on('connect')
def connected():
print('connected')
这些@socketio.on
行都不起作用,“更新”事件也不起作用。帮助将不胜感激。
解决方案
事件定义位于启动服务器和阻塞的 下方socketio.run()
,因此它们永远不会被注册。如果您将这些移到此调用之上,它们应该可以正常工作。
推荐阅读
- php - Php socket headers from client
- asp.net-mvc - 在 MVC VB.NET 中绑定输入类型单选的问题
- sublimetext3 - Sublime - 转到“在文件中查找”的第一个选择的键盘快捷键
- javascript - 如何从包含对象的嵌套数组中获取值
- javascript - Onclick 更改 div 图像以及背景颜色
- oracle - ORA-01722: 无效数字但仅当查询用作子查询时
- php - Get Multiple keys from redis server and parse json without loop using node JS
- sql-server - Querying the lowest values in a table
- javascript - How to generate new object while using the same methods
- sql - 如何选择早于特定日期的行?