फेंकता मैं दो सी # प्रोग्राम हैं जो WebSockets (भी कीमिया का प्रयोग करके) और अब (जावास्क्रिप्ट ग्राहकों के साथ) थोड़ी देर के लिए किया गया है सर्वर पूरी तरह से काम कर रहा है पर संवाद करना चाहिए। हालांकि एक कीमिया WebSocketClient
को जोड़ने से परिणाम NullReferenceException
क्लाइंट पक्ष पर फेंक दिया जा रहा है।कीमिया-WebSockets - WebSocketClient एक NullReferenceException
कुछ डीबगिंग के बाद मुझे पता चला कि _context.Connection.Connected
कॉल की वजह से WebSocketClient.cs
की लाइन 187 पर अपवाद फेंक दिया गया है। _context.Connection स्थानीय _client
के समान उदाहरण है और उनमें से कोई भी समय पर उस बिंदु पर शून्य नहीं है। Msdn.microsoft.com पर TcpClient.Connected
पृष्ठ पर सूचीबद्ध कोई संभावित अपवाद नहीं है (मुझे संकेत है कि इसे किसी भी अपवाद को फेंकना नहीं चाहिए)।
आगे जा रहे हैं वापस मैंने देखा है कि _client
वर्ग वैरिएबल का इंस्टेंस अपवादों के साथ भरा करने के लिए एक सामान्य लग रही उदाहरण से WebSocketClient.cs
की लाइन 176 पर बदल गई है:
इस लाइन के ठीक बाद निपटान() Context
कि बस लाइन 187 पर जोड़ा गया है की विधि डिस्कनेक्ट करने कहा जाता हो जाता है Connection
(जो _client
कि मैं Context.cs
की लाइन 131 पर पहले उल्लेख किया है के रूप में ही उदाहरण है।
मेरा प्रश्न है: क्यों हो रहा है और मैं इसे कैसे होने से रोक सकता है और सफलतापूर्वक वांछित WebSocketServer से कनेक्ट?
आप किसी भी अधिक जानकारी की जरूरत है मुझे टिप्पणी में पूछने के लिए संकोच नहीं करते कृपया।
संपादित करें 1
अपवाद केवल तब होता है जब सर्वर वास्तव में, सुन रहा है, तो सर्वर निष्क्रिय लाइन है WebSocketClient.cs
176 तक पहुँच नहीं है (यह सही व्यवहार क्योंकि OnRunClient()
कहा जाता है जब के लिए कनेक्शन सर्वर बनाया गया है)।
संपादित 2
रूप StackTrace का अनुरोध:
System.NullReferenceException was unhandled
HResult=-2147467261
Message=Object reference not set to an instance of an object.
Source=System
StackTrace:
at System.Net.Sockets.TcpClient.get_Connected()
at Alchemy.WebSocketClient.SetupContext(Context context) in C:\...\Alchemy\WebSocketClient.cs:regel 187
at Alchemy.WebSocketClient.HandleClientThread() in C:\...\Alchemy\WebSocketClient.cs:regel 94
at System.Threading.ThreadHelper.ThreadStart_Context(Object state)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state, Boolean preserveSyncCtx)
at System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.ThreadHelper.ThreadStart()
InnerException:
त्रुटि होने से पहले कोड पोस्ट करें – Florian
यह सब WebSocketClient.cs और Context.cs फ़ाइलों में है (इन फ़ाइलों का उल्लेख उपरोक्त प्रश्न में लिंक हैं)। मैंने इन फ़ाइलों को किसी भी तरह से नहीं बदला है। – Manuel