我有 Flask 服務器,它可以處理 HTTP 請求,也可以使用flask-socketio. 服務器代碼在這里:
from flask_socketio import SocketIO, emit
from flask import Flask
app = Flask(__name__)
socketio = SocketIO(app)
@socketio.on('response')
def message(data):
time.sleep(1)
emit('sensor', {"data": "hello"})
@socketio.on('connect')
def connect():
emit('after connect')
if __name__ == '__main__':
socketio.run(app)
html中的腳本標簽如下所示:
<script>
var socket = io("ws://192.168.100.3:5000");
socket.on('after connect', function(msg) {
console.log('connected')
socket.emit('response', msg)
});
socket.on('sensor', function(msg) {
console.log(msg.data)
socket.emit('response', msg)
});
</script>
一切正常,我得到了通信,但與我有關的一件事是,在服務器運行的終端中,我得到了 GET 和 POST 請求的代碼 200。
192.168.100.10 - - [17/Apr/2022 11:36:27] "GET /socket.io/?EIO=2&transport=polling&t=1650191787548-1094&sid=faed6806df0a437d8d17bd8a294f8754 HTTP/1.1" 200 -
192.168.100.10 - - [17/Apr/2022 11:36:27] "POST /socket.io/?EIO=2&transport=polling&t=1650191788570-1095&sid=faed6806df0a437d8d17bd8a294f8754 HTTP/1.1" 200 -
我在控制臺中得到回應,我認為溝通是正確的。但是隨著這些要求,我在網路瀏覽器中每秒“提出”的資源使用量越來越大。少量但仍然。據我所知,WebSockets 不應該向服務器發送 HTTP 請求,但它必須是 TCP/IP 恒定連接。
我做錯了什么,還是我的 WebSockets 理解錯誤?
uj5u.com熱心網友回復:
GET 和 POST 請求在那里,因為您使用的是 Socket.IO。如其檔案中所述,Socket.IO 在嘗試建立 WebSocket 連接之前以 HTTP 長輪詢開始。如果它不能使用 WebSocket,它也會回退到 HTTP 長輪詢。
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/459288.html
標籤:Python 烧瓶 网络套接字 烧瓶socketio
下一篇:如何重繪JWT
