Daha kolay hata ayıklama için Fiddler aracılığıyla tüm web bağlantısı bağlantılarını zorlamak için aynı şeyi yapmak zorundaydım. WebSocket4Net yazarı onun IProxyConnector
arabirimini yeniden kullanmayı tercih ettiğinden, System.Net.WebProxy
doğrudan kullanılamaz.
this link günü yazar CodePlex indirip SuperSocket.ClientEngine.Common.dll
ve SuperSocket.ClientEngine.Proxy.dll
ikisini içerebilir hangi onun ana kütüphanesinden SuperSocket.ClientEngine
gelen uygulamaları kullanarak önerir. Bunu önermiyorum. Bu, derleme sorunlarına neden olur, çünkü (zayıf), her iki dll'de de tanımlanan IProxyConnector ile aynı ad alanını hem ClientEngine
hem de WebSocket4Net
ile kullanmayı seçmiştir. benim için çalıştı Ne
:
Fiddler aracılığıyla hata ayıklama için çalışma elde etmek için, benim çözelti içine bu iki sınıf kopyalanabilir ve yerel ad bunları değiştirdi:
HttpConnectProxy aşağıdaki satırda bir hata var gibiydi:
if (e.UserToken is DnsEndPoint)
değişim için:
Bundan sonra
if (e.UserToken is DnsEndPoint || targetEndPoint is DnsEndPoint)
, işler iyi çalıştı. Örnek kod:
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!");
}
Bu gerçekten bana biraz zaman kazandı - teşekkürler! – fcrick
Bu çözümle proxy ile kimlik doğrulamanın bir yolu var mı? –
Burada, vekil hakkında çok fazla istisna, önce çok fazla veri, sonra uyumsuz protokoller, sonra vekil bağlantıyı reddetti (aka 2xx durum kodu vermedi) ... Lütfen cevabı güncelleyin. – Gizmo