问题是SignalR(版本1.0.8
)间歇性地由于我们无法理解的原因无法连接到后端。
我想记录一个事实,即客户端尝试连接以及为什么客户端在后端失败。
我已经能够使用Microsoft Docs添加前端日志记录(以下所有示例均直接从此处开始)。前端代码如下所示,并且可以正常工作:
public startConnection = () => {
try {
this.hubConnection = new signalR.HubConnectionBuilder()
.withUrl(environment.apiEndpoint + '/eventhub')
.configureLogging(this.backendLogger)
.build();
....
以上内容为我在控制台(或我想登录的任何地方)中提供了如下所示的输出(不重要,仅就上下文而言):
调试:启动HubConnection.backend-logger.service.ts:15
调试:以传输格式“文本”开始连接。 backend-logger.service.ts:15
调试:发送协商请求:http://localhost:54622/api/eventhub/negotiate。 backend-logger.service.ts:15
调试:选择传输“ WebSockets”。 backend-logger.service.ts:15
TRACE:(WebSocket传输)正在连接。 backend-logger.service.ts:15
信息:WebSocket已连接至ws:// localhost:54622 / api / eventhub?id = 1dQb2mby4ikkeG8cBmog-g。 backend-logger.service.ts:15
调试:发送握手请求。 channel.service.ts:90加入了
我需要的是这样的后端:
客户端x尝试连接
由于y
,连接失败
我看不到从后端登录的方法,除非我从后端启动连接(例如来自文档的示例,而不是我的代码):
var connection = new HubConnectionBuilder()
.WithUrl("https://example.com/my/hub/url")
.ConfigureLogging(logging =>
{
// Log to the Console
logging.AddConsole();
// This will set ALL logging to Debug level
logging.SetMinimumLevel(LogLevel.Debug);
})
.Build();
我没有做任何事情(因为我从客户端开始连接),.NET
中唯一的SignalR设置是services.AddSignalR();
文件中的Startup.cs
。我假设negotiate
端点是在SignalR库内的某个位置定义的,但是我需要记录接收到客户端的连接请求,如果连接失败,该请求将失败,该如何完成?中间件是我唯一的选择吗?这似乎是一种完全错误的方法。