2013-04-29 6 views
5

मैं एक-से-एक चैट-जैसी एप्लिकेशन को लागू करने के लिए निजी_प्यूब का उपयोग कर रहा हूं।रेल पर रूबी - फेय फ्रेमवर्क - private_pub

यहाँ मेरी कहानी है: एक उपयोगकर्ता के रूप में, मैं अपने साथी चैट छोड़ देता है जब कोई संदेश प्राप्त करना चाहते हैं -, आदि

Faye Monitoring docs के माध्यम से देख रहे हैं खिड़की बंद कर देता यहाँ unsubscribe पर बाध्यकारी पर मेरे प्रयास है: [ERROR] [Faye::RackAdapter] Timeout::Error

:


# Run with: rackup private_pub.ru -s thin -E production 
require "bundler/setup" 
require "yaml" 
require "faye" 
require "private_pub" 
require "active_support/core_ext" 

Faye::WebSocket.load_adapter('thin') 

PrivatePub.load_config(File.expand_path("../config/private_pub.yml", __FILE__),  ENV["RAILS_ENV"] || "development") 

wts_pubsub = PrivatePub.faye_app 

wts_pubsub.bind(:subscribe) do |client_id, channel| 
puts "[#{Time.now}] Client #{client_id} joined #{channel}" 
end 

wts_pubsub.bind(:unsubscribe) do |client_id, channel| 
    puts "[#{Time.now}] Client #{client_id} disconnected from #{channel}" 
    PrivatePub.publish_to channel, { marius_says: 'quitter' } 
end 

run wts_pubsub 

लेकिन मैं हो रही समय समाप्ति रखने

PrivatePub#publish_to में प्राइइंग, डेटा मैं रेल या निजी_पब ऐप से प्रकाशित होने पर दोनों की अपेक्षा करता हूं, लेकिन निजी_पब ऐप फांसी रखता है।

मैं निजी_पब से काम करने के लिए प्रकाशन कैसे प्राप्त कर सकता हूं?

+0

यह धागा कुछ हद तक पुराना है; क्या आपने यह पता लगाया है कि समस्या क्या है? मैं बिना किसी सफलता के इस सटीक समस्या पर घंटे बिता रहा हूं। – Etienne

उत्तर

0

आपका दूसरा बाइंड unsubscribe के बजाय disconnect ईवेंट होना चाहिए।

साथ ही, ब्राउज़र विंडो बंद होने पर अपने क्लाइंट साइड कोड में फेय/प्राइवेटपब disconnect ईवेंट को आग लगाना याद रखें।

नोट: आप फेय सर्वर के साथ या बस की तरह यह कुछ हो सकता है चैट एप्लिकेशन के डिजाइन

के आधार पर सादा जे एस में चैनल के आधार द्वारा एक चैनल पर सभी खुले सत्रों के लिए यह करने के लिए आवश्यकता हो सकती है:

window.onbeforeunload = functionThatTriggersFayeDisconnectEvent; 

मोबाइल से पोस्टिंग, उचित मार्कअप का उपयोग न करने के लिए खेद है।

बदलें साथ PrivatePub.publish_to channel, { marius_says: 'quitter' }:

+0

टैब को बंद करते समय दोनों 'डिस्कनेक्ट' और 'सदस्यता रद्द करें' ईवेंट स्वचालित रूप से ट्रिगर किए जाते हैं - यहां [संशोधित निजी_पब.आरबी] (https://gist.github.com/mariusbutuc/8cdd6d71e7595a2fb814#file-private_pub-rb) और [ इसका आउटपुट] (https://gist.github.com/mariusbutuc/8cdd6d71e7595a2fb814#file-private_pub-out)। ओपी के मुद्दे को हल करने के लिए प्रतीत नहीं होता है। –

0

अनुसंधान और कई प्रयास के घंटे के बाद, इस समाधान मैंने पाया है

system "curl http://localhost:9292/faye -d 'message={\"channel\":\"#{channel}\", \"data\":{\"channel\":\"#{channel}\",\"data\":{\"message\":{\"content\":\"#{client_id} disconnected from this channel.\"}}}, \"ext\":{\"private_pub_token\":\"ADD_APPROPRIATE_SECRET_HERE\"}}' &" 

यह एक अतुल्यकालिक अनुरोध को गति प्रदान करेगा (कर्ल + &) जो समस्या को बायपास करेंगे । सबसे अच्छा फिक्स नहीं है, लेकिन यह काम करता है।

संबंधित मुद्दे