I made some experiments using PubNub in VB.NET, as the examples on the site are only in C#. If you still don't know PubNub is a real-time messaging service based on channels with a publish-subscribe protocol (similar to Telegram). The base plan is free till 1M transactions and 1GB of data persistence. At first, you have to register, create an app and give it a name. Two keys will be created, one to publish (pub-.....) and one to subscribe to a channel (sub-.....).
- Create a VB.NET project with a form
- In Visual Studio go to Tools-> NuGet Packages and import PubNub package.
Now we can write our code: I put everything in form_shown
Private Sub FrmMAIN_Shown(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Shown
Dim pnConfiguration As New PubnubApi.PNConfiguration()
'insert key here
pnConfiguration.SubscribeKey = "sub-xxxxxxxxxxxxx"
pnConfiguration.Secure = False
PubNub = New PubnubApi.Pubnub(pnConfiguration)
'prepare call back
Dim IncomingMessages As Action(Of PubnubApi.Pubnub,
PubnubApi.PNMessageResult(Of Object)) = AddressOf IncomingMessagesCB
Dim IncomingPresence As Action(Of PubnubApi.Pubnub, PubnubApi.PNPresenceEventResult) = AddressOf IncomingPresenceCB
Dim IncomingStatus As Action(Of PubnubApi.Pubnub, PubnubApi.PNStatus) = AddressOf IncomingStatusCB
Dim sc As New PubnubApi.SubscribeCallbackExt(IncomingMessages, IncomingPresence, IncomingStatus)
'set up listener
PubNub.AddListener(sc)
PubNub.Subscribe(Of String).Channels(New String() {"my_channel"}).Execute()
End Sub
'callback for messaes
Private Sub IncomingMessagesCB(pn As PubnubApi.Pubnub, messageResult As PubnubApi.PNMessageResult(Of Object))
If messageResult IsNot Nothing Then
Debug.Print("In Example, SubscribeCallback received PNMessageResult")
Debug.Print("In Example, SubscribeCallback messsage channel = " +
messageResult.Channel)
Debug.Print("In Example, SubscribeCallback messsage channelGroup = " + messageResult.Subscription)
Debug.Print("In Example, SubscribeCallback messsage publishTimetoken = " + messageResult.Timetoken.ToString)
Debug.Print("In Example, SubscribeCallback messsage publisher = " + messageResult.Publisher)
Dim jsonString = messageResult.Message.ToString()
Dim msg As Dictionary(Of String, String) =
Newtonsoft.Json.JsonConvert.DeserializeObject(Of Dictionary(Of String, String))(jsonString)
Debug.Print("msg: " + msg("msg"))
End if
End Sub
'callback for presence
Private Sub IncomingPresenceCB(pn As PubnubApi.Pubnub, presencResult As PubnubApi.PNPresenceEventResult)
If presencResult IsNot Nothing Then
Debug.Print("In Example, SubscribeCallback received PNPresenceEventResult")
Debug.Print(presencResult.Channel + " " + presencResult.Occupancy + " " + presencResult.Event)
End If
End Sub
'callback for status
Private Sub IncomingStatusCB(pn As PubnubApi.Pubnub, statusResult As PubnubApi.PNStatus)
If statusResult.Category = bnubApi.PNStatusCategory.PNConnectedCategory Then
Debug.Print(statusResult.Category.ToString)
End If
End Sub