ตามที่อธิบายโดย โพสต์นี้ เมื่อไคลเอ็นต์เชื่อมต่อกับเซิร์ฟเวอร์เป็นครั้งแรก “ซ็อกเก็ต/กระบวนการหลัก” จะถูกสร้างขึ้นและเก็บการกำหนดไว้ ต่อมา เมื่อลูกค้าเข้าร่วมช่อง/หัวข้อเฉพาะ ซ็อกเก็ต/กระบวนการของแต่ละช่องจะคัดลอกการมอบหมายเหล่านั้นและสามารถเพิ่มได้ตามต้องการ
ตอนนี้ฉันมีกรณีการใช้งานที่เมื่อผู้ใช้เข้าร่วมช่อง (i.e. user:#{user_id})
ของตนเอง ฉันจะดึงข้อมูลบางอย่างเกี่ยวกับผู้ใช้จากฐานข้อมูล ซึ่งควรจะพร้อมใช้งานทั่วโลกสำหรับทุกช่องที่ผู้ใช้รายนี้เข้าร่วมในภายหลัง อย่างไรก็ตาม ฉันไม่สามารถหาวิธีใส่ข้อมูลเหล่านั้นลงใน socket.assigns
เพื่อให้สามารถใช้ได้ทุกที่ หากฉันพยายามมอบหมายให้พวกเขา พวกเขาจะพร้อมใช้งานใน socket.assigns
ของช่อง user:#{user_id}
นี้เท่านั้น
มีวิธีที่จะทำหรือไม่? ฉันควรจะลองดึงข้อมูลทั้งหมดเหล่านั้นในครั้งเดียวเมื่อผู้ใช้เชื่อมต่อครั้งแรก แทนที่จะดึงข้อมูลเมื่อเข้าร่วมช่องทางผู้ใช้แต่ละรายหรือไม่