Nginx-Rezepte: Asynchrone Benachrichtigungen von PostgreSQL an den Websocket

Um asynchrone Benachrichtigungen von PostgreSQL an Websocket vorzubereiten, benötigen wir Nginx selbst und seine Plugins postgres , push-stream , set-misc . (Ich habe Links zu meinen Gabeln angegeben, da ich einige Änderungen vorgenommen habe, die bisher nicht in die ursprünglichen Repositorys übernommen werden konnten. Sie können auch das vorgefertigte Image verwenden .)

Erstellen Sie eine Verbindung, um Clients über einen Websocket mit nginx zu verbinden

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 } 

Wenn Sie einen Client mit einem Websocket verbinden, hören wir asynchrone Benachrichtigungen in PostgreSQL ab

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

Wenn Sie einen Client vom Websocket trennen, hören wir nicht mehr auf asynchrone Benachrichtigungen in PostgreSQL

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

Wenn ein Kunde auf Websocket postet, tun wir etwas

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

Sie können dem Client auch einfach etwas im Websocket senden

 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/de456672/


All Articles