我有一个带有Kendo UI Core的.Net Core 2.2服务器和客户端。我可以从客户端获得初始读取结果,以加载由signalR连接的网格,但是当服务器使用SignalR向所有客户端发送消息时,该网格未更新,而是看到警告:
“警告:找不到名称为'read'的客户端方法。”
我在网上浏览了所有示例,包括 https://www.telerik.com/forums/signalr-datasource-with-server-sorting-filtering https://demos.telerik.com/aspnet-core/grid/signalr
我的代码与包括Startup.cs部分在内的相关部分完全匹配。
客户端index.cshtml:
<script src="~/signalr/signalr.js"></script>
<script>
var url = "https://localhost:44000/hubs/status";
var hub = new signalR.HubConnectionBuilder()
.configureLogging(signalR.LogLevel.Information)
.withUrl(url)
.build();
var hubStart = hub.start();
</script>
<div class="signalr-grid-container">
@(Html.Kendo().Grid<Model>
()
.Name("grid")
.Columns(columns =>
{
columns.Bound(c => c.Status).Title("Status"));
})
.DataSource(dataSource => dataSource
.SignalR()
.AutoSync(true)
.ServerFiltering(true)
.ServerPaging(true)
.ServerSorting(true)
.PageSize(10)
.Transport(tr => tr
.Promise("hubStart")
.Hub("hub")
.Client(c => c
.Read("read")
)
.Server(s => s
.Read("read")
)
)
.Schema(schema => schema
.Data("Data")
.Total("Total")
.Aggregates("Aggregates")
.Model(model =>
{
model.Id(p => p.ID);
})
)
)
.Groupable(true)
.Sortable()
.Filterable()
.Pageable(pager => pager.Refresh(true).PageSizes(new int[] { 10, 20, 50, 100 }))
)
</div>
服务器相关代码:
private async Task UpdateUsers()
{
await _hub.Clients.All.SendAsync("read");
}
服务器端似乎工作正常,我可以逐步了解它正在发送消息。
客户端可能是问题,因为我通过Chrome调试器在客户端收到此错误: “警告:找不到名称为'read'的客户端方法。”
我也感到奇怪的是,数据最初是加载的,但是更新的读取没有被触发。
任何帮助将不胜感激。