SignalR

https://docs.microsoft.com/en-us/aspnet/core/tutorials/signalr-typescript-webpack?view=aspnetcore-3.0&tabs=visual-studio


BACKEND:
Microsoft.AspNetCore.SignalR (1.1.0) API ir WEB projektuose

services.AddSignalR().AddJsonProtocol(config =>
{
	config.PayloadSerializerSettings.Converters.Add(new Newtonsoft.Json.Converters.StringEnumConverter());
});
services.AddScoped<SablonaiHub, SablonaiHub>();

app.UseSignalR(routes =>
{
	routes.MapHub<SablonaiHub>("/hubs/sablonai");
});

public class SablonaiHub : Hub
{
	private readonly IHubContext<SablonaiHub> hubContext;

	public SablonaiHub(IHubContext<SablonaiHub> hubContext)
	{
		this.hubContext = hubContext;
	}

	public async Task Updated(string message)
	{
		await hubContext.Clients.All.SendAsync("updated", message);
	}
}

FRONTEND:
"@microsoft/signalr": "3.0.0"

const initializeSignalR = () => {
	const url = `/hubs/sablonai`;
	const connection = new signalR.HubConnectionBuilder()
		.withUrl(`${process.env.PUBLIC_URL}${url}`)
		.configureLogging(signalR.LogLevel.Information)
		.build();

	connection.on('updated', async (message: string) => {
		const response: IStudyDescriptionTemplate[] = await api.study.getStudyDescriptionTemplates();
		setTemplates(response);
	});

	connection.start().catch(err => console.warn('err', err));
	return connection;
};

initializeData();
const connection = initializeSignalR();

return () => {
	connection.stop();
};

Last updated

Was this helpful?