对于javascript,signalR和c#来说都是全新的。
我在客户端有2个要在不同时间调用的函数,我只能触发1个。
JavaScript部分:
var connection = new signalR.HubConnectionBuilder().withUrl("/signalRHub").build();
connection.on("DisplayCardEvent", function (message) {
document.getElementById("EventMessage").innerHTML = message;
});
connection.on("DisplayCardInfo", function (idCode, givenName, surName){
document.getElementById("IdCode").innerHTML = idCode;
document.getElementById("GivenName").innerHTML = givenName;
document.getElementById("SurName").innerHTML = surName;
});
connection.start().catch(err => console.error(err.toString()));
HTML代码:
<div id="EventMessage"></div>
<div id="IdCode"></div>
<div id="GivenName"></div>
<div id="SurName"></div>
在我致电时在服务器端
_hubcontext.Clients.All.SendAsync("DisplayCardEvent", eventName);
它可以通过替换div框EventName中的内容来完美触发,但是当我调用时:
_hubcontext.Clients.All.SendAsync("DisplayCardInfo", idCode, givenName, surName);
客户端事件永远不会触发。检查浏览器时,它仅将第一个显示为侦听事件。
编辑:设法解决问题。问题是我用来运行应用程序的浏览器以前缓存了javascript文件。当我添加第二个功能时,它从未在浏览器端更新。解决方法是仅删除浏览器缓存。