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:
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:
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!!