Gelung peristiwa Nginx
HTTP, WebSocket dan I/O pangkalan data tanpa sekatan berkongsi gelung peristiwa Nginx.
Bahagian belakang berasaskan SQL Alfa
Modul Rust untuk Nginx yang menyediakan fungsi PostgreSQL melalui HTTP dan menghantar pemberitahuan perubahan melalui WebSocket.
GitHubHTTP, WebSocket dan I/O pangkalan data tanpa sekatan berkongsi gelung peristiwa Nginx.
Pernyataan tersedia dan pemprosesan saluran paip mengurangkan kerja berulang serta perjalanan pergi balik ke pangkalan data.
Teks respons JSONB PostgreSQL diteruskan tanpa perubahan. Menyahaktifkan pengesahan output juga mengelakkan penghuraian JSON respons.
Binaan dengan libpq yang ditampal menghapuskan salinan badan permintaan ke Rust dan libpq bagi permintaan yang layak. Peminjaman penimbal automatik terpakai pada permintaan besar yang layak melalui sambungan pangkalan data tidak disulitkan. Binaan standard masih menyalin.
Penanda aras di atas menggunakan penimbal yang disalin. Respons dan TLS masih melibatkan salinan.
# HTTP endpoints
pgxio_endpoint list_tasks
web.list_tasks read_only;
pgxio_endpoint create_task
web.create_task;
# WebSocket subscription authorization
pgxio_stream tasks
web.authorize_tasks;Fungsi SQL menerima dan mengembalikan JSON. Fungsi mengendalikan pertanyaan, peraturan perniagaan dan pemberian kuasa.
Isytiharkan fungsi yang disediakan oleh API anda. pgxio memeriksa JWT dan memanggil setiap fungsi dalam transaksi.
Langganan WebSocket yang diberi kuasa memberi isyarat perubahan. Klien mendapatkan semula petikan keadaan semasa melalui HTTP.
Langganan menyampaikan isyarat perubahan, bukan log peristiwa kekal. Apabila menyambung semula, klien melanggan semula dan mendapatkan petikan keadaan terkini.
Jalankan arahan ini daripada salinan sumber pgxio sedia ada. Docker Compose dan Python 3.9 atau lebih baharu diperlukan.
Persekitaran pembangunan yang disertakan mendengar pada localhost. pgxio ialah perisian alfa; konfigurasi ini untuk penerokaan setempat.
bin/pgxio init
bin/pgxio up
TOKEN=$(bin/pgxio token alice)
curl http://localhost:8080/v1/create_task \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{"title":"Hello from pgxio"}'
curl http://localhost:8080/v1/list_tasks \
-H "Authorization: Bearer $TOKEN" \
-H 'Content-Type: application/json' \
-d '{}'