Resep Nginx: pemberitahuan asinkron dari PostgreSQL ke websocket

Untuk menyiapkan notifikasi sinkron dari PostgreSQL ke websocket, kita perlu nginx sendiri dan plugin postgres , push-stream , set-misc . (Saya memberi tautan ke garpu saya, karena saya membuat beberapa perubahan yang tidak dapat didorong ke repositori asli sejauh ini. Anda juga dapat menggunakan gambar yang sudah jadi .)

Untuk menghubungkan klien ke nginx melalui websocket, buat

location =/websocket { push_stream_subscriber websocket; #    websocket push_stream_channels_path $arg_id; #   websocket    id push_stream_websocket_allow_publish on; #   -    push_stream_client_subscribed_request /subscribe; #        push_stream_client_unsubscribed_request /unsubscribe; #        push_stream_client_publish_request /publish; #         websocket } 

Saat menghubungkan klien ke websocket, kami mulai mendengarkan pemberitahuan asinkron di PostgreSQL

 location =/subscribe { internal; postgres_pass ngx; #    PostgreSQL set_quote_json_str $channel $arg_id; #    postgres_query "listen $channel"; #     } 

Saat memutuskan koneksi klien dari websocket, kami berhenti mendengarkan pemberitahuan asinkron di PostgreSQL

 location =/unsubscribe { internal; postgres_pass ngx; #    PostgreSQL set_quote_json_str $channel $arg_id; #    postgres_query "unlisten $channel"; #     } 

Ketika klien memposting ke websocket, kami melakukan sesuatu

 location =/publish { internal; postgres_pass ngx; #    PostgreSQL postgres_query "select now()"; #    PostgreSQL      websocket } 

Anda juga dapat mengirim sesuatu ke klien di websocket

 location =/publisher { allow 127.0.0.1/16; #     deny all; #     push_stream_channel_info_on_publish off; #         push_stream_publisher; #   push_stream_channels_path $arg_id; #   websocket    id } 

Source: https://habr.com/ru/post/id456672/


All Articles