signalr - .Net5 SignalR SqlNotification 通知通知客户端
问题描述
大家好,提前感谢您的帮助。我正在开发一个利用 SQL 通知的 .Net 5 SignalR 通知。该应用程序部分工作,在页面第一次加载时向客户端发送通知。经过一些进一步的调试。我确定每次数据库更新时都正确调用了 SendCallNotifications 方法,但是客户端没有正确更新。我不确定问题是否出在我的 javascript、线程问题(因为它被设置为任务),或者管道中是否存在某种类型的故障。这是我的集线器代码:
public class CallNotificationHub : Hub
{
//
// https://docs.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-5.0
// https://docs.microsoft.com/en-us/aspnet/core/signalr/hubs?view=aspnetcore-5.0
//
private SqlDependency dependency;
// public Task OnConnected()
public override async Task OnConnectedAsync()
{
//return base.OnConnectedAsync();
await base.OnConnectedAsync();
}
//[HubMethodName("sendCallNotifications")]
public async Task SendCallNotifications()
{
SendEmail sendEmail = new SendEmail("SendCallNotifications Reached", "New SignalR5 Notification", "");
try
{
string connectionString = "connectionstring";
SqlDependency.Start(connectionString);
SqlConnection connection = new SqlConnection(connectionString);
connection.Open();
SqlCommand command = new SqlCommand();
command.CommandText = "SELECT [ID], [TimeEntered], [CallFrom], [CallTo] FROM [dbo].[tbl_Log_InboundTwilioCalls]";
command.Connection = connection;
command.CommandType = CommandType.Text;
dependency = new SqlDependency(command);
dependency.OnChange += new OnChangeEventHandler(dependency_OnChange);
DataTable dt = new DataTable();
dependency.AddCommandDependency(command);
var reader = command.ExecuteReader();
//await Clients.All.SendAsync("ReceiveMessage", "user", "message");
}
catch (Exception ex)
{
SendEmail sendErrEmail = new SendEmail("SendCallNotifications Error", ex.ToString(), "");
}
await Clients.All.SendAsync("RecieveNotification", "Changed");
}
private void dependency_OnChange(object sender, SqlNotificationEventArgs e)
{
SendEmail sendEmail = new SendEmail("Dependency Change", e.Type.ToString(), "");
if (e.Type == SqlNotificationType.Change)
{
CallNotificationHub nHub = new CallNotificationHub();
nHub.SendCallNotifications();
}
}
这是我的javascript。
"use strict";
var connection = new signalR.HubConnectionBuilder().withUrl("/CallNotificationHub").build();
connection.on("RecieveNotification", (result) => {
var li = document.createElement("li");
li.textContent = result;
document.getElementById("messagesList").appendChild(li);
console.log(result);
alert("Changed");
});
connection.start().then(function () {
connection.invoke("SendCallNotifications").catch(err => console.error(err));
}).catch(function (err) {
return console.error(err.toString());
});
我在控制台中没有看到任何错误,所以我不确定下一步该往哪里看。任何帮助,将不胜感激。
我刚刚在控制台中遇到了一个新错误:
Error: An unexpected error occurred invoking 'SendCallNotifications' on the server.
invocationDescriptor.invocationId http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:2259
processIncomingData http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:2371
onreceive http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:1923
onmessage http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:4728
connect http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:4725
connect http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:4687
step http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:4649
verb http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:4630
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:4624
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:4620
connect http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:4669
startTransport http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3842
createTransport http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3792
step http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3411
verb http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3392
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3386
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3382
createTransport http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3745
startInternal http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3665
step http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3411
verb http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3392
fulfilled http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3383
promise callback*step http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3385
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3386
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3382
startInternal http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3596
start http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3480
step http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3411
verb http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3392
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3386
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3382
start http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:3468
startInternal http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:2036
step http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:1883
verb http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:1864
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:1858
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:1854
startInternal http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:2024
startWithStateTransitions http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:2006
step http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:1883
verb http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:1864
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:1858
__awaiter http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:1854
startWithStateTransitions http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:1993
start http://192.168.0.3:61443/js/signalr/dist/browser/signalr.js:1989
<anonymous> http://192.168.0.3:61443/js/CallNotification2.js:14
CallNotification2.js:15:69
试图弄清楚这告诉我什么。以前没见过这个。
解决方案
推荐阅读
- php - PHPSpreadSheet Writer Xlx 在 PHP 7.0 版中不起作用
- javascript - Lodash _.flatMapDepth 返回深层嵌套的对象数组
- terraform - Terraform 与 CLI 上的 openstack 联合用户
- python - 有人可以解释这段代码中实际参数和形式参数背后的原因吗
- apache-flink - Apache Flink 中是否有任何触发器每分钟触发一次延迟数据?
- python-3.x - 带有 ProcessPoolExecutor 的芹菜返回 ModuleNotFoundError
- python - 如何在 facebook 先知中获取有关变化点的值?
- angular - 如何使用 api 以材料的角度编写自动完成功能
- azure - 有没有办法从 Azure Runbook 进行 API 调用?
- python - 如何在python中使用扩展正则表达式?