The goal of this post is to connect and use SignalR from AngularJS. All the code is available in GitHub.
All code is available here: GitHub Link
The application used in this post allows to add tasks to a collaborative list of tasks to do. The application displays a list with all the tasks pending to do and also allows to remove them from the list. SignalR will push the notification “newTask” and “taskDone” to all connected users.
Feel free to get the code from github and run the application in more than one place (different tabs in your explorer) to see how SignalR synchronizes all of them.
The simplicity of the application allows to focus on the goal of this post: SignalR and AngularJS.
This is a screenshot of the running application.
SignalR Hub
The first thing that we need is to configure the OWIN startup, we need this class in our project:
[assembly: OwinStartup(typeof(Startup))] namespace AngularJS_SignalR { public class Startup { public void Configuration(IAppBuilder app) { // SignalR app.MapSignalR(); } } }
The signalR hub type is “INotesCallbacks”, this interface defines the callbacks that the hub can make to the connected clients.
// Client callbacks public interface INotesCallbacks { // Notify note added Task BroadcastNewNote(Note newNote); // Notify note removed Task BroadcastRemoveNote(int noteId); }
The hub also implement the interface “INotesCalls” this interfaces defines the hub methods that clients can call.
// Client calls public interface INotesCalls { // Add note Task AddNote(string note); // Get all notes IEnumerable<Note> GetAllNotes(); // Remove note Task RemoveNote(int roomId); }
This is the implementation of the hub:
Continue reading