【问题标题】:SignalR Server side method call from Client side in Non MVC project在非 MVC 项目中从客户端调用 SignalR 服务器端方法
【发布时间】:2017-02-21 00:04:30
【问题描述】:

我熟悉 WebMethods 和 PageMethods 从客户端调用服务器端方法而不刷新页面。

我正在实现调用服务器端方法(存在于 index.aspx.cs 中)。

这是我正在尝试的:

服务器端创建的 Hub 类:

public class MyHub : Hub
{
    public void RefreshData(string imessage)
    {

        Clients.All.displayData(imessage);

    }
}

客户端:

<script>
    var isconnected = false;
    (function () {

        $.connection.myHub.client.displayData = function (thisdata) {
            $('ul').append('<li>' + thisdata + '</li>');
        };

        $("#btnadd").click(function () {
            if (isconnected) {
                $.connection.myHub.server.refreshData($("#txtval").val());
            }
        });

        $.connection.hub.start()
            .done(function () {

                isconnected = true;
            })
            .fail(function () {
                isconnected = false;
            });


    })();

</script>

以上一切正常,客户端正在调用服务器端的 RefreshData 方法,服务器正在将消息传递给客户端的 displayData 方法。

我的问题是:与 AJAX WebMethod () 一样。是否可以调用 index.aspx.cs 的任何方法(不在 MyHub 类中)?

如果我谈到从 index.aspx.cs 调用客户端方法,那么我们可以尝试:

var context = GlobalHost.ConnectionManager.GetHubContext<MyHub>();
context.Clients.All.displayData(imessage);

但是如果我从任何 page.aspx.cs 搜索监听客户端的方法调用,我什么也得不到。..

我希望我已经解释了这个问题,如果没有......请原谅......

【问题讨论】:

    标签: c# jquery asp.net asp.net-mvc signalr


    【解决方案1】:

    不,您不能使用 SignalR 连接调用 aspx.cs 方法(集线器外部)。您需要使用 SignalR 调用 aspx.cs 方法的确切场景是什么?正如您所提到的,使用 ajax 来调用 aspx.cs 方法。

    事实上对于上面提到的代码sn-p,ajax最适合(不是 信号R)。

    SignalR 主要用于当您需要在客户端和服务器之间打开连接时(例如使用 websocket,SignalR 的传输选项支持之一)。如果您需要在没有客户端请求的情况下将消息从服​​务器推送到客户端,则更合适。

    // Invoke this from server when server want to push some information to client without client requesting this information
    $.connection.myHub.client.updateData = function (thisdata) {
            $('ul').append('<li>' + thisdata + '</li>');
        };
    

    【讨论】:

    • 感谢您的回复。场景是,只是想用signalr替换现有项目的Ajax方法。客户端需要在一段时间内连续调用 aspx.cs 方法.. 我无法将该方法从 aspx.cs 移动到 hub 类..
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多