【发布时间】:2021-06-24 01:41:06
【问题描述】:
当从控制器调用 SignalR 核心集线器方法时,Angular SignalR 客户端没有从 asp.net 接收数据,但是当我从 localhost 测试它时它可以工作
我有一个带有 asp.net 后端的 Angular 网站。我将 SignalR 用于实时数据服务。我在localhost 中进行了调试和测试,它运行良好,角度客户端接收到数据。但是当我published API 时,角度客户端没有收到任何数据。
MyHub.cs
using Microsoft.AspNetCore.SignalR;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Biz1PosApi.Hubs
{
public class MyHub: Hub<IHubClient>
{
public void Announce(string message)
{
Clients.All.Announce(message);
}
public async Task joinroom(string room)
{
await Groups.AddToGroupAsync(Context.ConnectionId, room);
await Clients.Group(room).JoinMessage($"{Context.ConnectionId} joined {room}");
}
}
}
IHubClient.cs
using System;
using System.Collections.Generic;
using System.Linq;
using System.Threading.Tasks;
namespace Biz1PosApi.Hubs
{
public interface IHubClient
{
Task Announce(string message);
Task NewOrder(string platform, int UPOrderId);
Task OrderUpdate(int UPOrderId);
Task JoinMessage(string message);
}
}
ValuesController.cs
public ValuesController(IHubContext<UrbanPiperHub, IHubClient> uhubContext)
{
_uhubContext = uhubContext;
...
}
[HttpPost("test")]
public void test(string message)
{
_uhubContext.Clients.All.Announce(message);
}
Angular 客户端
this.connection = new signalR.HubConnectionBuilder()
.configureLogging(signalR.LogLevel.Information)
.withUrl('https://<My-Public-Domain>/uphub')
.withAutomaticReconnect([0, 1000, 5000, 10000])
.build();
this.connection.start().then(() => {
console.log('SignalR Connected!');
}).catch((err: { toString: () => any; }) => {
return console.error(err.toString());
});
this.connection.on("Announce", (msg: any) => {
console.log(msg)
});
我看过很多工作教程,他们以同样的方式做,但它不适合我。发布 API 时,角度客户端无法正常工作。我一直在测试localhost 中的角度运行。会不会是个问题。
【问题讨论】:
标签: c# angular signalr asp.net-core-signalr