Web PubSub for Socket.IO connection problem

110 Views Asked by At

I need to use WebSockets on Azure, what seems to be available is WebPubSub for Socket.IO but it seems the documentation is not updated as trying to use an example from samples cannot connect to the socket. The url suggested in documentation {/clients/socketio/hubs/Hub }is different than what is returned by Azure {client/hubs/Hub}, when tried with returned url 404 is returned and when tried with suggested url 401 is returned;

returned url from Azure;

enter image description here

suggested url from documentation;

enter image description here

using Azure.Messaging.WebPubSub;
using Azure.Messaging.WebPubSub.Clients;
using System;
using System.Threading.Tasks;

namespace subscriber
{
    class Program
    {
        static async Task Main(string[] args)
        {
            var connectionString = "Endpoint=https://<resource>.webpubsub.azure.com;AccessKey=<key>";
            var hub = "Hubibi";
            var message = "This is a message";

            try
            {

                // Either generate the URL or fetch it from server or fetch a temp one from the portal
                var serviceClient = new WebPubSubServiceClient(connectionString, hub);
                //var url = serviceClient.GetClientAccessUri();
                var url = serviceClient.GetClientAccessUri(roles: new string[] { $"webpubsub.sendToGroup", $"webpubsub.joinLeaveGroup" }).AbsoluteUri;

                var urlParts = url.Split('?');
                var urlNew = "wss://<resource>.webpubsub.azure.com/clients/socketio/hubs/" + hub + "?" + urlParts[1];

                //Console.WriteLine($"try with received url: {url}\n\n");
                Console.WriteLine($"try with alternate url: {urlNew}\n\n");

                // WebPubSubClient
                var wsClient = new WebPubSubClient(new Uri(urlNew));
                wsClient.GroupMessageReceived += eventArgs =>
                {
                    Console.WriteLine($"Receive group message from {eventArgs.Message.Group}: {eventArgs.Message.Data}");
                    return Task.CompletedTask;
                };
                await wsClient.StartAsync();
                Console.WriteLine("Connected.");
                Console.Read();

                //Console.WriteLine($"try with alternate url: {urlNew}");
                //// WebPubSubClient
                //wsClient = new WebPubSubClient(new Uri(urlNew));
                //wsClient.GroupMessageReceived += eventArgs =>
                //{
                //    Console.WriteLine($"Receive group message from {eventArgs.Message.Group}: {eventArgs.Message.Data}");
                //    return Task.CompletedTask;
                //};
                //await wsClient.StartAsync();
                //Console.WriteLine("Connected.");
                //Console.Read();

            }
            catch (Exception ee)
            {
                Console.WriteLine($"error received: {ee.Message}");
                //throw;
            }
        }
    }

}


Thanks for reading and any help.

I have added the code from Azure samples which is not working.

0

There are 0 best solutions below