मेरे पास Postgresql 9.1 डेटाबेस पर एक "आलेख" तालिका है और एक ट्रिगर जो प्रत्येक सम्मिलन पर एक चैनल को सूचित करता है।नोड-पोस्टग्रेस के साथ लिस्टेन क्वेरी टाइमआउट?
मैं एक node.js स्क्रिप्ट बनाना चाहता हूं जो उन आवेषणों को पकड़ता है और Socket.io का उपयोग कर कनेक्ट क्लाइंट को अधिसूचनाओं को धक्का देता है। अब तक मैं चैनल को लिस्ट करने के लिए नोड-पोस्टग्रेस मॉड्यूल का उपयोग कर रहा हूं लेकिन यह लगभग 10-15 सेकंड के बाद लिस्टेन क्वेरी टाइम लगता है और आवेषण को पकड़ने से रोकता है। टाइमआउट होने पर मैं एक नई सुनवाई से पूछताछ कर सकता हूं, लेकिन मुझे यकीन नहीं है कि निरंतरता को सही ढंग से कैसे कार्यान्वित किया जाए।
CREATE FUNCTION article_insert_notify() RETURNS trigger AS $$
BEGIN
NOTIFY "article_watcher";
RETURN NULL;
END;
$$ LANGUAGE plpgsql;
ट्रिगर:
CREATE TRIGGER article_insert_trigger
AFTER INSERT ON article
FOR EACH ROW EXECUTE PROCEDURE article_insert_notify();
और Node.js कोड:
var pg = require ('pg'),
pgConnection = "postgres://user:[email protected]/db"
pg.connect(pgConnection, function(err, client) {
client.query('LISTEN "article_watcher"');
client.on('notification', function(data) {
console.log(data.payload);
});
});
मैं यह कैसे सुनिश्चित कर सकते हैं एक पूर्णकालिक सुनें या कैसे
यहाँ मेरी PostgreSQL अधिसूचना प्रक्रिया है क्या मैं उन टाइमआउट्स को सुनवाई क्वेरी को फिर से जारी करने के लिए पकड़ सकता हूं? या हो सकता है कि नोड-पोस्टग्रेस के अलावा कोई मॉड्यूल ऐसा करने के लिए अधिक उपयुक्त टूल प्रदान करता हो?
का उपयोग करते हुए [पीजी वादा] (https://github.com/vitaly-t/pg-promise) , स्पष्टीकरण के साथ पूर्ण उदाहरण: [LISTEN/NOTIFY] (https://github.com/vitaly-t/pg-promise/wiki/Learn-by-Example#listen--notify) –