ลูกค้าเชื่อมต่อใหม่อย่างต่อเนื่อง

แอปพลิเคชัน .net ของฉันซึ่งเชื่อมต่อกับฮับ signalr มีการเชื่อมต่อใหม่อยู่ตลอดเวลา

ปัญหานี้เกิดขึ้นเฉพาะกับเครือข่ายองค์กรอื่นๆ บางแห่งเท่านั้น ซึ่งทำให้ฉันเชื่อว่ามีบางอย่างกำลังถูกบล็อก ฉันได้ลองใช้เว็บไซต์ jabbr.net จากเครือข่ายเดียวกัน แต่ก็ไม่ได้ผลเช่นกัน (ใน Chrome)

ฉันจะติดตาม/แก้ไขปัญหานี้ได้อย่างไร

ป้อนคำอธิบายรูปภาพที่นี่


person UnreliableWitness    schedule 21.02.2013    source แหล่งที่มา


คำตอบ (2)


ฉันคิดว่าคุณกำลังประสบปัญหานี้ https://github.com/SignalR/SignalR/pull/1553. เรากำลังดำเนินการแก้ไขปัญหานี้ ปัญหานี้เกิดขึ้นเมื่อเซิร์ฟเวอร์ส่งคำขอกิจกรรมหมดเวลา แต่คำขอ http จริงยังคงทำงานอยู่ สิ่งที่เกิดขึ้นคือการขนส่ง longpolling และเซิร์ฟเวอร์ส่งคำขอ http ของเหตุการณ์ต่อสู้เพื่อการเชื่อมต่อ

เมื่อต้องการแก้ไขปัญหานี้ คุณสามารถระบุ LongPollingTransport โดยเฉพาะได้ เราจะดูการแก้ไขปัญหานี้สำหรับรุ่นถัดไป

person davidfowl    schedule 21.02.2013
comment
ข้อบกพร่องได้รับการแก้ไขแล้วและจะอยู่ในรุ่นถัดไป github.com/SignalR/SignalR/commit/< /ก> - person davidfowl; 22.02.2013
comment
ฉันมีปัญหาเดียวกันกับไคลเอนต์ .NET signalr เวอร์ชัน 2.2.1.0 ภายใต้ .NET 4.0 ฉันเริ่มต้นไคลเอนต์โดยตั้งค่า SSE เป็นโปรโตคอล เมื่อสิ่งที่ @davidfowl อธิบายเกิดขึ้น ลูกค้าจะต้องดำเนินการเชื่อมต่อ กำจัด หยุดและเชื่อมต่อ กำจัด และหยุดอีกครั้งในทันที ฉันไม่เห็นไคลเอนต์สลับระหว่าง LongPollingTransport และ SSE - แค่อยู่กับ SSE หลังจากเริ่มต้นไคลเอนต์ ฉันจะแนบ ContinueWith เพื่อตรวจหาข้อยกเว้น/ข้อผิดพลาดของงาน IIRC การลบ ContinueWith ช่วยได้ ณ จุดหนึ่ง แต่ฉันชอบที่จะเก็บมันไว้และไม่ต้องการจัดการข้อยกเว้นรอบ ๆ Task.wait() - person StackUndefined; 20.11.2016
comment
หากคุณระบุการขนส่ง มันก็จะไม่เป็นทางเลือก - person davidfowl; 21.11.2016
comment
แปลกที่ฉันได้รับปัญหานี้เฉพาะเมื่อฉัน ทำ ระบุ ClientTransport (อย่างใดอย่างหนึ่ง ServerSentEventsTransport หรือ LongPollingTransport) ก่อนที่จะเริ่ม HubConnection อะไรคือสาเหตุของสิ่งนี้? - person Nii Laryea; 23.01.2018

สำหรับเซิร์ฟเวอร์ของคุณ ในส่วน system.diagnostics ของ web.config ให้เพิ่ม:

<sharedListeners>
  <add name="SignalR" 
       type="System.Diagnostics.TextWriterTraceListener" 
       initializeData="signalr.log.txt" />
</sharedListeners>

สำหรับลูกค้าของคุณ (ฉันสมมติว่า. net C#) การบันทึกจะทำผ่าน Debug.Writes นอกจากนี้ ฉันขอแนะนำให้เชื่อมต่อกับตัวจัดการข้อผิดพลาดสำหรับการเชื่อมต่อของคุณ

หากคุณใช้ไคลเอ็นต์ JS คุณสามารถเปิดการเข้าสู่ระบบได้

// Non dynamically made connection
connection.logging = true;
// Dynamically made connection
$.connection.hub.logging = true

หวังว่านี่จะช่วยได้!

person N. Taylor Mullen    schedule 21.02.2013