我尝试使用套接字库而不是python请求库来访问Firebase上的数据库。贝娄我有一个简单的例子,返回
b'Invalid Firebase Request'
Time 0.10938119888305664
我主要是尝试减少客户端之间的延迟('应该发布的不是')和火基服务器
import socket
import ssl
import time
import requests
HOST = '<my database link>.firebaseio.com'
PORT = 443
with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
ss = ssl.wrap_socket(s, ssl_version=ssl.PROTOCOL_TLSv1)
ss.connect((HOST, PORT))
for i in range(1):
ts = time.time()
request = "GET /<A database child>.json \nHost: "+ HOST+"\n\n"
ss.send(request.encode())
result = ss.recv(4096)
#print (result)
while (len(result)>0):
print (result)
result = ss.recv(4096)
print ('Time '+ str(time.time()-ts))
当我将范围增加到1以上时,程序也不会发出多个请求。这是为什么?
答案 0 :(得分:1)
看起来您正在尝试发送格式错误的HTTP(S)请求。有效的HTTP 1.1请求如下所示:
request = "GET /<A database child>.json HTTP/1.1\r\n" \
"Host: " + HOST + "\r\n" \
"Connection: keep-alive\r\n" \
"\r\n"
收到无效请求后,服务器显然会关闭连接,因此您无法再读取(也不会写入)套接字ss
。