簡體   English   中英

SignalR服務器到客戶端的方法不起作用

[英]SignalR server to client method not working

基於各種資源, signalr代碼應該可以工作,但是我無法使其從服務器向客戶端發送通知。 這是html / javascript部分:

<script src="/Scripts/jquery-1.6.4.min.js"></script>
<script src="/Scripts/jquery.signalR-2.2.1.min.js"></script>
<script src="/signalr/js"></script>

<script type="text/javascript">
    $(function () {
        var cHub = $.connection.cHub;

        $.connection.hub.logging = true;

        cHub.client.sendMessage = function (content) {
            $("#container-hub").append($("<p />").html(content));
        };

        $.connection.hub.start().done(function() {
            $('[id$=bGo]').click(
                    function() {
                        cHub.server.send('Sync process started');
                    });
        });        
    });
</script>
<div id="container-hub" style="background: red; height: 100px; width: 100%;"></div>

Hub.cs類:

using Microsoft.AspNet.SignalR;

namespace CMS.Objects
{
    public class CHub : Hub
    {
        public void Send(string message)
        {
            // Call the broadcastMessage method to update clients.
            Clients.All.sendMessage(message);
        }
    }
}

Startup.cs類:

using Microsoft.Owin;
using Owin;

[assembly: OwinStartup(typeof(CMS.CStartup))]

namespace CMS
{
    public class CStartup
    {
        public void Configuration(IAppBuilder app)
        {
            app.MapSignalR();            
        }
    }
}

這就是我如何調用方法sendMessage方法:

private void ShowMessage(string message)
{       
    var clients = GlobalHost.ConnectionManager.GetHubContext<CHub>().Clients;
    clients.All.sendMessage(message);
}

單擊按鈕bGo ,消息將追加到container-hub div上,但是當我調用sendMessage方法時什么也沒有。

編輯

一些其他發現; 當我從OnConnected方法內調用sendMessage ,它起作用:

public override Task OnConnected()
{
    Clients.All.sendMessage("Connection Initialised");
    return base.OnConnected();
}

在花了一些時間調查問題之后,我終於找到了解決方案。 不確定100%,但是我認為問題出在頁面上使用UpdatePanel signalR JavaScript代碼包裝到Sys.Application.add_load而不是使用jQuery的$(function () { ,它開始工作。

我提到我不是100%確信的原因是,在發布問題之前,已多次刪除具有ScriptManagerUpdatePanel ,從而沒有任何結果。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM