SignalRv2 - การส่งผ่านค่าไปยังฮับ

ฉันจะพยายามอย่างเต็มที่เพื่ออธิบายเรื่องนี้ ในโค้ด Hub ของฉัน ฉันได้สร้างอินสแตนซ์ของคลาส ConnectionMapping แล้ว นำมาจากที่นี่ http://www.asp.net/signalr/overview/guide-to-the-api/mapping-users-to-connections#inmemory

ConnectionMapping นี้ต้องใช้คีย์เฉพาะสำหรับพจนานุกรม ฉันมีโค้ดเว็บฟอร์มที่เรียกว่า default.aspx.cs ในโค้ดด้านหลังนี้ ฉันจะได้รับชื่อผู้ใช้สำหรับเข้าสู่ระบบที่ไม่ซ้ำกันภายในเหตุการณ์ Page_Load ฉันจะส่งชื่อผู้ใช้นี้ไปยัง Hub เพื่อเพิ่มลงใน ConnectionMapping ได้อย่างไร

ฉันเหนื่อย.

IHubContext hubContext = GlobalHost.ConnectionManager.GetHubContext<MyHub>();

แต่ฉันไม่รู้ว่าฉันทำอะไรหลังจากทำสิ่งนี้ ช่วย.


person RStyle    schedule 22.05.2015    source แหล่งที่มา


คำตอบ (1)


คำตอบสั้น ๆ คือคุณทำไม่ได้ ไม่ใช่ด้วยรหัสที่คุณมี ปัญหาคือลำดับนี้:

  • หน้าคำขอของลูกค้า
  • โค้ดฝั่งเซิร์ฟเวอร์ทำงาน (Page_Load)
  • ผลลัพธ์ HTML/JS จะถูกส่งไปยังไคลเอนต์
  • ลูกค้าเชื่อมต่อกับ SignalR

ณ จุดนี้ คุณน่าจะเพิ่มลงใน ConnectionMapping แน่นอนว่าปัญหาคือข้อมูล/ตัวแปรใน Page_Load ไม่มีอีกต่อไป และคุณจะไม่มีทางแมปการเชื่อมต่อที่คุณเพิ่งได้รับกับคำขอเพจนั้น แม้ว่าจะเป็นอย่างนั้นก็ตาม

เว็บไซต์ของคุณจำเป็นต้องเก็บข้อมูลบางส่วนไว้ อาจเป็นชื่อผู้ใช้นั้น และส่งต่อไปยังฮับในการเชื่อมต่อ (อาจผ่านสตริงการสืบค้น) ข้อมูลอาจถูกจัดเก็บไว้ในเพจโดยเป็นส่วนหนึ่งของเหตุการณ์ Page_Load (ใน div ที่ซ่อนอยู่หรือผ่านกลไกอื่น)

ตอนนี้คุณมีข้อมูลทั้งสองชิ้นพร้อมกัน และสามารถเพิ่มลงในการแมปได้ตามปกติ

person BradleyDotNET    schedule 22.05.2015