如何向SignalR的connection.invoke调用的函数传递参数?
给SignalR的renderComponent方法传递数据的实现方式
要给renderComponent方法传递数据,直接在connection.invoke()的方法名后面追加参数即可,SignalR会自动把这些参数传递给后端Hub对应的方法。
单参数传递示例
假设你要传递一个包含业务数据的对象,修改后的代码如下:
var connection = new signalR.HubConnectionBuilder().withUrl("/hubFilas").build(); connection.start().then(function () { var time = setInterval(function () { // 定义要传递的业务数据 var componentParams = { userId: 456, status: "processing", pageSize: 10 }; // 在invoke方法后直接追加参数 connection.invoke("renderComponent", componentParams).then(function (o) { DisplayHub(o) }).catch(function (err) { return console.error(err.toString()); }); }, 120000) })
多参数传递示例
如果需要传递多个独立的基础类型参数,直接依次添加即可:
// 传递用户ID、起始时间、结束时间三个参数 connection.invoke("renderComponent", 456, "2024-06-01", "2024-06-30")
关键注意点
- 后端Hub中的
renderComponent方法必须和前端传递的参数数量、类型完全对应:比如前端传一个对象,后端要定义匹配的模型类接收;传多个基础类型参数,后端方法就要有同等数量的对应参数。 - 传递复杂对象时,确保对象属性名和后端模型的属性名一致,避免序列化/反序列化失败。
内容的提问来源于stack exchange,提问作者João Gabriel
相关产品推荐
相关产品推荐

