[英]How to receive Socket.IO socket using native socket module in Python
當我嘗試使用本機套接字模塊從Socket.IO接收消息時,而不是接收消息,我收到此消息:
GET /socket.io/?EIO=3&transport=polling&t=MIlsTQ_ HTTP/1.1
Host: localhost:5000
Connection: keep-alive
Accept: */*
Origin: http://localhost:8080
User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36
DNT: 1
Referer: http://localhost:8080/
Accept-Encoding: gzip, deflate, br
Accept-Language: en-US,en;q=0.9
如何解決此問題,並接收消息而不是數據?
客戶代碼:
socketsSend: function() {
const socket = io.connect('http://localhost:5000');
/*var socket = io.Socket('http://localhost', {
port: 5000
});*/
socket.connect();
socket._connectTimer = setTimeout(function() {
socket.close();
}, 500);
socket.on('connect', function() {
// socket connected successfully, clear the timer
clearTimeout(socket._connectTimer);
});
服務器代碼:
import socket
import json
addr = 'localhost',5000
sock=socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.bind(addr)
sock.listen(3)
while True:
connection, client_address = sock.accept()
data = connection.recv(100000)
print(data.decode('utf-8'))
從該如何引導:
通常,它們(套接字的recv和send函數)在關聯的網絡緩沖區已被填充(發送)或清空(recv)時返回。 然后,他們告訴您他們處理了多少字節。 在完全解決您的消息之前,您有責任再次致電他們。
因此,據我所知, connection.recv(100000)
在緩沖區緩沖區填滿之前不會返回任何數據,因此要解決此問題,您需要將緩沖區設置為較低的值(也許為2048?)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.