首页 > 解决方案 > SignalR connection.on & connection.invoke

问题描述

我有以下代码

var connection = new signalR
        .HubConnectionBuilder()
        .withUrl("/bidHub")
        .build();

    connection.start().then(res => {
        connection.invoke("JoinGroup", auctionId)
            .catch(err => console.log(err));
    }).catch (function (err) {
        return console.error(err.toString());
    });

ajax call here

connection.on("RefreshBids", function (currentBid, lastBidder) {
        document.getElementById("currentPrice").textContent = `$${currentBid}`;
        document.getElementById("lastBidder").textContent = `${lastBidder}`;
    });

    connection.invoke("RefreshBids", JSON.stringify(currentBid), JSON.stringify(lastBidder)).catch(function (err) {
        return console.error(err.toString());
    });
    event.preventDefault();

该代码适用于“connection.on”和“connection.on”+“connection.invoke”,但是当它们都适用时,“connection.invoke”会给出错误,即找不到“currentBid”和“lastBidder” ,它仍然有效。它似乎与“connection.on”一起使用,但我也应该使用“connection.invoke”吗

标签: asp.net-mvcsignalr

解决方案


用法取决于您是否使用生成的代理。通常,您将使用其中之一,但不会同时使用两者。有关更多详细信息,请参阅生成的代理文档和调用服务器方法文档。


推荐阅读