62 lines
1.9 KiB
C#
62 lines
1.9 KiB
C#
// Copyright (c) .NET Foundation. All rights reserved.
|
|
// Licensed under the Apache License, Version 2.0. See License.txt in the project root for license information.
|
|
|
|
using System;
|
|
using System.Threading.Tasks;
|
|
using Microsoft.AspNetCore.SignalR;
|
|
|
|
namespace SocketsSample.Hubs
|
|
{
|
|
public class DynamicChat : DynamicHub
|
|
{
|
|
public override async Task OnConnectedAsync()
|
|
{
|
|
await Clients.All.Send($"{Context.ConnectionId} joined");
|
|
}
|
|
|
|
public override async Task OnDisconnectedAsync(Exception ex)
|
|
{
|
|
await Clients.Others.Send($"{Context.ConnectionId} left");
|
|
}
|
|
|
|
public Task Send(string message)
|
|
{
|
|
return Clients.All.Send($"{Context.ConnectionId}: {message}");
|
|
}
|
|
|
|
public Task SendToOthers(string message)
|
|
{
|
|
return Clients.Others.Send($"{Context.ConnectionId}: {message}");
|
|
}
|
|
|
|
public Task SendToGroup(string groupName, string message)
|
|
{
|
|
return Clients.Group(groupName).Send($"{Context.ConnectionId}@{groupName}: {message}");
|
|
}
|
|
|
|
public Task SendToOthersInGroup(string groupName, string message)
|
|
{
|
|
return Clients.OthersInGroup(groupName).Send($"{Context.ConnectionId}@{groupName}: {message}");
|
|
}
|
|
|
|
public async Task JoinGroup(string groupName)
|
|
{
|
|
await Groups.AddAsync(Context.ConnectionId, groupName);
|
|
|
|
await Clients.Group(groupName).Send($"{Context.ConnectionId} joined {groupName}");
|
|
}
|
|
|
|
public async Task LeaveGroup(string groupName)
|
|
{
|
|
await Clients.Group(groupName).Send($"{Context.ConnectionId} left {groupName}");
|
|
|
|
await Groups.RemoveAsync(Context.ConnectionId, groupName);
|
|
}
|
|
|
|
public Task Echo(string message)
|
|
{
|
|
return Clients.Caller.Send($"{Context.ConnectionId}: {message}");
|
|
}
|
|
}
|
|
}
|