.NET client library for Pusher.com.
Pusher.NET is structured as a Portable Class Library, but is dependent on a WebSocket implementation, which is currently only available for Windows Store apps.
Using Nuget:
PM> Install-Package PusherNET
var pusher = new Pusher(new WebsocketConnectionFactory(), appKey);
await pusher.ConnectAsync();
var fooChannel = await pusher.SubscribeToChannelAsync("foo");
fooChannel.EventEmitted += (sender, evt) =>
{
Debug.WriteLine(evt.Data);
};
PS! WebsocketConnectionFactory
is currently only implemented for Windows Store apps. Feel free to contribute an implementation for other platforms.
Use the options object to enable HTTPS:
var pusher = new Pusher(new WebsocketConnectionFactory(), appKey, new Options
{
Scheme = WebServiceScheme.Secure
});
If you want to use private or presence channels, you will have to implement a simple authenticator. How you do this is dependent on your existing infrastructure. You provide the authenticator through the Pusher options object:
var pusher = new Pusher(new WebsocketConnectionFactory(), appKey, new Options
{
Authenticator = new MyAuthenticator(whatever, parameters, youNeed)
});
By default events that are raised contain a string Data field which is straight-up JSON code returned from the server. If you want statically typed access to this object, you will have to provide an event contract.
An event contract is most easily created by registering with Pusher:
[DataContract]
class SomeDataStructure
{
[DataMember(Name = "id")]
public int Id { get; set; }
}
pusher.AddContract(EventContract.Create<SomeDataStructure>("event name"));
Now, you can elect to receive strongly typed events:
pusher.GetEventSubscription<SomeDataStructure>().EventEmitted += (sender, evt)
{
// evt.Data is SomeDataStructure
Debug.WriteLine(evt.Data.Id);
};