首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在azure webrole中访问signalr集线器

如何在azure webrole中访问signalr集线器
EN

Stack Overflow用户
提问于 2017-09-21 23:19:04
回答 1查看 164关注 0票数 1

我有一个工作的SignalR集线器,其中包含一些连续运行的方法,它们是管理会话生命周期,连接会话...这些连续运行的方法使用Timer类每X秒执行一次。这真的不是一个好的做法,因为线程泄漏,性能问题,锁…

一个更好的实现是有一个WebRole,所有这些“工作者方法”都应该放在WebRole.cs文件中,这很有意义,因为这正是azure中角色的目的。

probleme现在,它不能使用以下代码获得hub上下文的工作实例:

代码语言:javascript
复制
var hubContext = GlobalHost.ConnectionManager.GetHubContext<AppHub>();
hubContext.Clients.All.Message("hello from webrole");

hubContext是实例化的(所以不是null),但即便如此,仍然没有向客户端广播任何内容。没有错误,也没有异常!

我猜这是因为WebRole.csStartup.cs是在不同的线程中实例化的?

如何在WebRole.cs中访问集线器上下文?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2017-09-25 17:21:12

hubContext是实例化的(所以不是null),但即便如此,仍然没有向客户端广播任何内容。没有错误,也没有异常!

我可以在我这边重现同样的问题。要将消息从WebRole.cs广播到客户端,您可以尝试安装Microsoft.AspNet.SignalR.Client并调用集线器方法将消息发送到客户端。以下代码适用于我在Compute Emulator中的工作,您可以参考它。

WebRole.cs

代码语言:javascript
复制
public class WebRole : RoleEntryPoint
{
    public override bool OnStart()
    {
        // For information on handling configuration changes
        // see the MSDN topic at https://go.microsoft.com/fwlink/?LinkId=166357.

        return base.OnStart();
    }

    public override void Run()
    {
        while (true)
        {
            System.Threading.Thread.Sleep(30000);

            var hub = new Microsoft.AspNet.SignalR.Client.HubConnection("http://localhost:57276/signalr/hubs");

            var proxy = hub.CreateHubProxy("ChatHub");
            hub.Start().Wait();

            //invoke hub method
            proxy.Invoke("mySend", "hello from webrole; " + DateTime.UtcNow.ToString());
        }         
    }


}

ChatHub.cs

代码语言:javascript
复制
public class ChatHub : Hub
{
    public void Send(string name, string message)
    {
        Clients.All.addNewMessageToPage(name, message);
    }

    public void mySend(string message)
    {
        Clients.All.addNewMessageToPage("webrole", message);
    }
}

测试结果

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

https://stackoverflow.com/questions/46347641

复制
相关文章

相似问题

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