Skip to content

Instantly share code, notes, and snippets.

@edewit
Created October 11, 2016 16:04
Show Gist options
  • Save edewit/06846282021f1315a4cc7dfbb1414841 to your computer and use it in GitHub Desktop.
Save edewit/06846282021f1315a4cc7dfbb1414841 to your computer and use it in GitHub Desktop.
var websocketClient = new MessageWebSocketRx();
var subscribeToMessagesReceived = websocketClient.ObserveTextMessagesReceived.Subscribe(
    msg =>
    {
        Debug.WriteLine($"Reply from test server: {msg}");
    });

var cts = new CancellationTokenSource();

cts.Token.Register(() =>
{
    Debug.Write("Aborted");
    subscribeToMessagesReceived.Dispose();
});
await websocketClient.ConnectAsync(new Uri("ws://localhost:8001/echo"), cts);
await websocketClient.SendTextAsync("hello");
@edewit
Copy link
Author

edewit commented Oct 12, 2016

var client = new ClientWebSocket();
await client.ConnectAsync(new Uri("ws://localhost:8001/echo"), CancellationToken.None);
var buffer = new byte[1024];
var recieve = client.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
var data = new ArraySegment<byte>(new UTF8Encoding().GetBytes("hello"));
var send = client.SendAsync(data, WebSocketMessageType.Text, true, CancellationToken.None);

@edewit
Copy link
Author

edewit commented Oct 12, 2016

WebsocketClientLite.PCL

@edewit
Copy link
Author

edewit commented Oct 12, 2016

using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Threading;
using Windows.UI.Xaml.Controls;
using Windows.UI.Xaml.Navigation;
using FHSDK;
using FHSDK.FHHttpClient;
using WebsocketClientLite.PCL;

// The Blank Page item template is documented at http://go.microsoft.com/fwlink/?LinkId=402352&clcid=0x409

namespace fh_csharp_window_10_blank_app
{
    /// <summary>
    ///     An empty page that can be used on its own or navigated to within a Frame.
    /// </summary>
    public sealed partial class MainPage : Page
    {
        public MainPage()
        {
            InitializeComponent();
        }

        protected override async void OnNavigatedTo(NavigationEventArgs e)
        {
            try
            {
                await FHClient.Init();
                Label.Text = "Yay, this app is ready to go!";
                //NOTE: other FH methods can only be called after FHClient.init succeeds

                var websocketClient = new MessageWebSocketRx();
                var subscribeToMessagesReceived = websocketClient.ObserveTextMessagesReceived.Subscribe(
                    msg =>
                    {
                        Debug.WriteLine($"Reply from test server: {msg}");
                        Label.Text = msg;
                    });

                var cts = new CancellationTokenSource();

                cts.Token.Register(() =>
                {
                    Debug.Write("Aborted");
                    subscribeToMessagesReceived.Dispose();
                });
                await websocketClient.ConnectAsync(new Uri("wss://ws-ckrych.rhcloud.com:8443/"), cts, new List<string> {"toto"});

                await websocketClient.SendTextAsync("hello");

                //var client = new ClientWebSocket();
                //await client.ConnectAsync(new Uri("ws://localhost:8001/echo"), CancellationToken.None);
                //var buffer = new byte[1024];
                //var recieve = client.ReceiveAsync(new ArraySegment<byte>(buffer), CancellationToken.None);
                //var data = new ArraySegment<byte>(new UTF8Encoding().GetBytes("hello"));
                //var send = client.SendAsync(data, WebSocketMessageType.Text, true, CancellationToken.None);

                //await Task.WhenAll(recieve, send);
                //Label.Text = Encoding.ASCII.GetString(buffer).TrimEnd('\0');
            }
            catch (FHException)
            {
                Label.Text = "Oops, an error occurred while processing FHClient.init";
            }
        }
    }
}

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment