मुझे आसान डीबगिंग के लिए फिडलर के माध्यम से सभी वेबस्केट कनेक्शन को धक्का देने के लिए ऐसा ही करना था। चूंकि WebSocket4Net लेखक ने अपने IProxyConnector
इंटरफ़ेस का पुनः उपयोग करने का विकल्प चुना है, System.Net.WebProxy
सीधे उपयोग करने योग्य नहीं है।
this link पर लेखक अपने माता पिता के पुस्तकालय SuperSocket.ClientEngine
से कार्यान्वयन का उपयोग कर आप CodePlex से डाउनलोड करने और दोनों SuperSocket.ClientEngine.Common.dll
और SuperSocket.ClientEngine.Proxy.dll
शामिल कर सकते हैं जिससे पता चलता है। मैं इसकी अनुशंसा नहीं करता हूं। इससे मुद्दों को संकलित करने का कारण बनता है क्योंकि उन्होंने (खराब) दोनों को ClientEngine
और WebSocket4Net
दोनों के साथ समान नामस्थान का उपयोग करना चुना है, जिसमें दोनों डीएलएल में परिभाषित आईपीरोक्सी कनेक्टर है।
क्या मेरे लिए काम किया:
फ़िडलर के माध्यम से डीबगिंग के लिए काम कर इसे प्राप्त करने के लिए, मैं अपने समाधान में इन दो वर्गों की नकल की है, और स्थानीय नाम स्थान के लिए उन्हें बदल दिया है:
HttpConnectProxy निम्न पंक्ति पर एक बग के लिए लग रहा था:
if (e.UserToken is DnsEndPoint)
बदलने के लिए:
if (e.UserToken is DnsEndPoint || targetEndPoint is DnsEndPoint)
उसके बाद, सब कुछ ठीक काम किया। नमूना कोड:
private WebSocket _socket;
public Initialize()
{
// initialize the client connection
_socket = new WebSocket("ws://echo.websocket.org", origin: "http://example.com");
// go through proxy for testing
var proxy = new HttpConnectProxy(new IPEndPoint(IPAddress.Parse("127.0.0.1"), 8888));
_socket.Proxy = (SuperSocket.ClientEngine.IProxyConnector)proxy;
// hook in all the event handling
_socket.Opened += new EventHandler(OnSocketOpened);
//_socket.Error += new EventHandler<ErrorEventArgs>(OnSocketError);
//_socket.Closed += new EventHandler(OnSocketClosed);
//_socket.MessageReceived += new EventHandler<MessageReceivedEventArgs>(OnSocketMessageReceived);
// open the connection if the url is defined
if (!String.IsNullOrWhiteSpace(url))
_socket.Open();
}
private void OnSocketOpened(object sender, EventArgs e)
{
// send the message
_socket.Send("Hello World!");
}
यह वास्तव में मुझे कुछ समय बचाया - धन्यवाद! – fcrick
क्या इस समाधान के साथ प्रॉक्सी के साथ प्रमाणित करने का कोई तरीका है? –
प्रॉक्सी के बारे में एक के बाद, कई बहुत अधिक डेटा, फिर असंगत प्रोटोकॉल के बाद, कई प्रॉक्सी प्राप्त करने के बाद प्रॉक्सी ने कनेक्शन को खारिज कर दिया (उर्फ ने स्टेटस कोड 2xx वापस नहीं किया) ... कृपया उत्तर अपडेट करें? – Gizmo