Skip to content

The Dummy Programmer

Stories of daily programming

  • Home
  • My other dummy projects
  • Games
    • Space Y: An Asteroids clone
  • Services
    • What’s my user agent
    • What’s my IP address
  • About
  • Toggle search form

Push notifications library with C# and .NET Framework

Posted on January 30, 2020April 24, 2020 By

Good morning folks!

A few days have passed since our last contact… And here I am talking about a topic that I find very interesting: push notifications.

I know that there are existing libraries that already do this job and that probably cover your needs (for example you could look at SignalR from Microsoft).

But since I’m a dummy programmer, and I wanted to learn something new, I started developing my own library just to play the game.

These are the goals I set for my library:

  • must be fully developed in C#
  • must work asynchronously
  • must be event driven
  • must provide some kind of authentication
  • must allow to send a message string to the connected client

Working on this library was a lot of fun, because I had the opportunity to use technologies that I had little to do with, like sockets and asynchronous programming.

 

How it works

The library consists of a server part and a client part.

In order to start receiving push notifications, the client must send a registration message to the server.

During registration, the client opens a TCP connection to the server which, once registration is complete, is used by the server as the channel for sending push notifications.

The server library provides a method to trigger a push notification to a client, given a client ID and a message.

The client library allows user code to subscribe to an event that is triggered when a push notification has been received.

The Visual Studio solution, along with the library projects, provides two console applications for test purpose: one that acts as a server and the other that acts as a client.

To see the library in action in few clicks, you can do the following:

Build and execute TDP.TestServer.exe and TDP.TestClient.exe. You will see something similar:

Push Notifications - Test Server

 

Push Notifications - TestClient

Now follow this steps:

  • in the “Test client” console type the number that will identify your client, for example “1” and press Enter
  • in the “Test server” console type the client number you want to send the notification, in our example “1”, followed by the text message

After that, you will see that in the “Test client” console will appear the message from the server: your push notification has been sent!

Below you can see the result:

Push Notifications -Test Server - Step 2

 

Push Notifications - Test Client - Step 2

Just a note: by default the two applications are configured to work on the same address 127.0.0.1.

In a real world application you must configure the server to listen to a specific public IP address, and the client to connect to the same IP address.

To do this, just take a look the to app.config files.

 

Get the code

I published the source code on GitHUB at https://github.com/thedummyprogrammer/csharp-push-notification-lib.

If you want you can download and use it freely, and maybe give me a feedback.

In the next months I will try to improve this library and build something useful upon it…. stay tuned!!

C#, Sockets

Post navigation

Previous Post: Capture screen using C#
Next Post: Windows 10 search no more working!!

Related Posts

Reading data from a NetworkStream object in C# C#
Working with C# async / await keywords (part 1 of 3) C#
Working with C# async / await keywords (part 3 of 3) C#
Working with C# async / await keywords (part 2 of 3) C#
System.Net.Sockets.SocketException (0x80004005): No such host is known ASP.NET
Make user interface calls in thread safe way in Windows Forms C#

Search

Related posts

  • A chat program built in C# with .NET socket library
  • Put an ASP.NET website under maintenance
  • System.Net.Sockets.SocketException (0x80004005): No…
  • Run an ASP.NET web API in CentOS 7

Categories

  • .NET 6 (1)
  • .NET 7 (1)
  • AJAX (1)
  • Android (2)
  • Apache (4)
  • ASP.NET (9)
  • ASP.NET MVC (3)
  • Avalonia UI (1)
  • BCP (1)
  • Bitlocker (2)
  • C# (14)
  • CentOS (4)
  • ClosedXML (1)
  • CLR (1)
  • DNS (1)
  • Encryption (3)
  • Excel (2)
  • FuelPHP (3)
  • Games (2)
  • Google Chrome (1)
  • GSuite (1)
  • HTML (1)
  • Imagick (2)
  • Javascript (1)
  • Kindle (1)
  • LAMP (3)
  • Linux (7)
  • MariaDB (2)
  • Mathematics (2)
  • MySql (4)
  • NPOI (1)
  • Office 365 (1)
  • Perl (1)
  • PHP (6)
  • Programming (1)
  • Remote desktop (1)
  • SFTP (2)
  • Sockets (3)
  • Sql Server (20)
  • Sql Server 2016 (14)
  • Sql Server 2019 (1)
  • SSL (4)
  • Task scheduler (1)
  • Telerik ASP.NET AJAX (2)
  • The Dummy Programmer Chat (2)
  • Threading (5)
  • Tools (1)
  • TPL (3)
  • TypeScript (3)
  • Ubuntu (4)
  • Virtualization software (3)
  • Visual Studio (1)
  • Visual Studio Code (2)
  • VueJS (1)
  • Web fonts (1)
  • Web programming (6)
  • Windows (12)
  • Windows 10 (15)
  • Windows Forms (1)
  • Windows Server (6)

Copyright © 2024 The Dummy Programmer | Privacy Policy | Terms of use |

Powered by PressBook Masonry Dark

Manage Cookie Consent
This site doesn’t collect user personal data and doesn’t install profiling or analytical cookies, either its own or from third parties. Read our privacy policy for more info.
Functional Always active
The technical storage or access is strictly necessary for the legitimate purpose of enabling the use of a specific service explicitly requested by the subscriber or user, or for the sole purpose of carrying out the transmission of a communication over an electronic communications network.
Preferences
The technical storage or access is necessary for the legitimate purpose of storing preferences that are not requested by the subscriber or user.
Statistics
The technical storage or access that is used exclusively for statistical purposes. The technical storage or access that is used exclusively for anonymous statistical purposes. Without a subpoena, voluntary compliance on the part of your Internet Service Provider, or additional records from a third party, information stored or retrieved for this purpose alone cannot usually be used to identify you.
Marketing
The technical storage or access is required to create user profiles to send advertising, or to track the user on a website or across several websites for similar marketing purposes.
Manage options Manage services Manage {vendor_count} vendors Read more about these purposes
View preferences
{title} {title} {title}