using Microsoft.AspNet.SignalR;
using Microsoft.AspNet.SignalR.Hubs;
using System.Collections.Generic;
using System.Threading.Tasks;
namespace SignalR.MoveShape
public static class UserHandler
public static HashSet<string> ConnectedIds = new HashSet<string>();
public class MoveShapeHub : Hub
public void moveShape(int x, int y)
Clients.Others.shapeMoved(x, y);
public override Task OnConnected()
UserHandler.ConnectedIds.Add(Context.ConnectionId);
Clients.All.usersConnected(UserHandler.ConnectedIds.Count());
return base.OnConnected();
public override Task OnReconnected()
UserHandler.ConnectedIds.Add(Context.ConnectionId);
Clients.All.usersConnected(UserHandler.ConnectedIds.Count());
return base.OnConnected();
public override Task OnDisconnected()
UserHandler.ConnectedIds.Remove(Context.ConnectionId);
Clients.All.usersConnected(UserHandler.ConnectedIds.Count());
return base.OnDisconnected();