मैं एक्शन केबल के साथ एक साधारण चैट-जैसी एप्लिकेशन (योजना पोकर ऐप) बनाने की कोशिश कर रहा हूं। मैं शब्दावली, फाइल पदानुक्रम और कॉलबैक कैसे काम करता हूं, द्वारा थोड़ा उलझन में हूं।एक्शनकेबल - कनेक्ट किए गए उपयोगकर्ताओं की संख्या कैसे प्रदर्शित करें?
class SessionsController < ApplicationController
def create
cookies.signed[:username] = params[:session][:username]
redirect_to votes_path
end
end
फिर एक उपयोगकर्ता एक वोट है कि हर किसी के लिए प्रसारित किया जाना चाहिए पोस्ट कर सकते हैं:
यह क्रिया है कि उपयोगकर्ता सत्र बनाता है
class VotesController < ApplicationController
def create
ActionCable.server.broadcast 'poker',
vote: params[:vote][:body],
username: cookies.signed[:username]
head :ok
end
end
इस बिंदु सब कुछ अप करने के लिए मेरे लिए स्पष्ट है और ठीक काम करता है। समस्या यह है कि - मैं कनेक्ट किए गए उपयोगकर्ताओं की संख्या कैसे प्रदर्शित करूं? क्या कोई कॉलबैक है जो जेएस में आग लगती है जब उपयोगकर्ता (उपभोक्ता?) कनेक्ट होता है? मैं चाहता हूं कि जब मैं गुप्त मोड में 3 अलग-अलग ब्राउज़रों में 3 टैब खोलूं तो मैं "3" प्रदर्शित करना चाहता हूं। जब कोई नया उपयोगकर्ता कनेक्ट होता है, तो मैं संख्या को बढ़ाना चाहता हूं। यदि कोई उपयोगकर्ता डिस्कनेक्ट करता है, तो संख्या में कमी होनी चाहिए।
मेरे PokerChannel
:
class PokerChannel < ApplicationCable::Channel
def subscribed
stream_from 'poker'
end
end
app/assets/javascripts/poker.coffee
:
App.poker = App.cable.subscriptions.create 'PokerChannel',
received: (data) ->
$('#votes').append @renderMessage(data)
renderMessage: (data) ->
"<p><b>[#{data.username}]:</b> #{data.vote}</p>"
ध्यान दें कि यह * विशिष्ट थ्रेड * के लिए कनेक्शन की वर्तमान संख्या है, इसे विभिन्न प्रक्रियाओं और धागे पर कनेक्शन की संख्या नहीं है – edwardmp
यह सर्वर के कनेक्शन की संख्या भी है, एक विशिष्ट चैनल के लिए नहीं । – Matt