public async Task ConnectToWebSocketEcho()
{
if (Helper.IsNetworkAvailable())
{
// ARRANGE
var message = "foo";
var haserror = false;
var messages = new List<String>();
var closed = new TaskCompletionSource<Boolean>();
var document = await BrowsingContext.New().OpenNewAsync("https://www.websocket.org/echo.html");
var ws = new WebSocket(document.DefaultView, "ws://echo.websocket.org");
// ACT
ws.Opened += (s, ev) => ws.Send(message);
ws.Message += (s, ev) =>
{
var msg = ev as MessageEvent;
messages.Add(msg.Data.ToString());
ws.Close();
};
ws.Closed += (s, ev) => closed.SetResult(true);
ws.Error += (s, ev) => haserror = true;
await closed.Task;
// ASSERT
haserror.Should().BeFalse();
messages.Count.Should().Be(1);
messages[0].Should().Be(message);
}
}