首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >SignalR服务器到客户端方法不工作

SignalR服务器到客户端方法不工作
EN

Stack Overflow用户
提问于 2016-11-07 09:31:09
回答 1查看 1.4K关注 0票数 0

基于各种资源,signalr代码应该可以工作,但我无法将通知从服务器发送到客户端。下面是html/javascript部分:

代码语言: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类:

代码语言:javascript
运行
复制
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类:

代码语言:javascript
运行
复制
using Microsoft.Owin;
using Owin;

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

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

下面是我如何调用方法sendMessage方法:

代码语言:javascript
运行
复制
private void ShowMessage(string message)
{       
    var clients = GlobalHost.ConnectionManager.GetHubContext<CHub>().Clients;
    clients.All.sendMessage(message);
}

当单击按钮bGo时,消息将被附加到container-hub div,但当我调用sendMessage方法时没有任何消息。

编辑

一些额外的发现;当我从sendMessage方法中调用OnConnected时,它可以工作:

代码语言:javascript
运行
复制
public override Task OnConnected()
{
    Clients.All.sendMessage("Connection Initialised");
    return base.OnConnected();
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-27 07:19:31

在花了一些时间调查这个问题之后,我终于找到了解决办法。不是100%肯定,但我认为问题是在页面上使用UpdatePanel。将signalR javascript代码包装到Sys.Application.add_load,而不是使用jQuery的$(function () {,它就开始工作了。

我提到我不能百分之百确定的原因是,带有UpdatePanelScriptManager已经被删除了多次,在发布问题之前没有给出结果。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/40461809

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档