草庐IT

c# - SignalR - 在不同的 Redis 背板之间切换

假设我们有2个Redis服务器背板,一个作为Master,另一个作为Slave。每个Web应用程序都使用SignalR,以便在发生时将内容推送到连接的客户端,并将它们连接到我在Application_Start中使用的背板GlobalHost.DependencyResolver.UseRedis(host,port,"",new[]{"signalr.key"});RouteTable.Routes.MapHubs();现在万一MasterRedis背板出现故障,我想将SlaveRedis服务器提升为主服务器并将所有现有连接从Web服务器切换到新的MasterRedis服务器。为了将

redis - 在横向扩展方面,Redis 是 SignalR + Redis 的瓶颈吗?

我对用于实现可扩展的服务器应用程序的SignalR+Redis解决方案很感兴趣。我担心的是Redisclusterisnotproductionready然而!所以我的问题是:在横向扩展方面,Redis是SignalR+Redis的瓶颈吗?如果是,是否有任何基于Linux的解决方案可以解决该问题? 最佳答案 在单个Redis服务器上,您可以使用pubsub轻松处理多达10K个并发客户端。如果您仍在评估使用什么,这应该超过您当前阶段的需要。Redis集群应该会在今年年底或2014年初投入生产。您可以实际下载并试用。现在很多人都在使用它

redis - SignalR.Redis 是如何工作的?

除了阅读github中的代码外,是否有关于SignalR.Redis包如何工作的任何白皮书类型的文档?具体来说,我想知道它向Redis添加了哪些键、更新/删除策略等。当查看Redis内部时,我所看到的只是在以下调用中指定的一个键(即“SignalR.Redis.Sample”):GlobalHost.DependencyResolver.UseRedis(server,Int32.Parse(port),password,"SignalR.Redis.Sample");这个key好像只是redis中的一个计数器。我假设正在创建并快速删除其他key,以促进连接到Redis的每个应用程序服

c# - "OnDisconnected(): no suitable method found to override"- SignalR

我一直在尝试按照CodeProject(http://www.codeproject.com/Articles/562023/Asp-Net-SignalR-Chat-Room)上的“Asp.NetSignalR聊天室”教程来实现聊天室。但是,我收到错误消息“Hubs.ChatHubs.OnDisconnected():找不到合适的方法来覆盖”ChatHub类:publicclassChatHub:Hub{#regionDataMembersstaticListConnectedUsers=newList();staticListCurrentMessage=newList();#en

c# - 将 Redis 与 SignalR 结合使用

我有一个在服务器A上运行的ASP.NETMVC应用程序和在服务器B上运行的一些Web服务。我已经实现了实时通知,我在服务器A上使用了SignalR。但现在我需要服务器B来还能够将消息发送到服务器A(主要Web应用程序)提供的View。因此,我正在尝试教程here涉及Redis背板。在服务器A的启动中,我添加了以下内容:GlobalHost.DependencyResolver.UseRedis("localhost",6379,string.Empty,"abc");app.MapHubs();在这里,我假设“myApp”表示channel,当我在Redis控制台上运行publisha

c# - 何时调用 SignalR 集线器构造函数?

我正在尝试调试SignalR集线器,并注意到构造函数被多次调用,即使是单个客户端也是如此。这是预期的行为吗?我原以为构造函数只被调用一次以进行类初始化,但我多次遇到断点。 最佳答案 在SignalRHub中,实例将根据每个请求创建。因此,只有一个或多个客户并不重要。事实上Hub是对PersistentConnection的抽象,如果你想更精确地控制幕后发生的事情,你可以使用PersistentConnection。在这里查看:https://github.com/SignalR/SignalR/wiki/PersistentConn

c# - 无法通过 SignalR Hub 访问 session 信息。是我的设计错了吗?

我刚刚发现您无法访问SignalRHub中的当前session。简化我的场景:我试着写一段聊天。当前用户的名称保存在session中。我使用SignalR更新(一组连接)每条新消息。现在我发现我无法通过中心访问当前用户的名称。我想可能有一些变通办法,但我的设计实现是错误的吗?我不应该为此目的使用SignalR吗?或者我不应该以这种方式使用Session吗? 最佳答案 您不应将Session与SignalR一起使用(参见SignalRdoesn'tuseSessiononserver)。您可以通过连接ID来识别逻辑连接,您可以mapt

c# - SignalR:如何从服务器/C# 真正调用集线器的方法

我正在尝试改进我的应用程序,这将需要从C#而不是javascript调用集线器。在我的应用中添加任务的当前工作流程是:调用API将数据添加到数据库将新记录返回给AngularJSController从Controller调用集线器的方法hub适本地向客户广播调用我想要做的是绕过从我的AngularJSController调用集线器的方法,并直接从我的APIController方法调用它。这是我的集线器目前的样子:publicclassTaskHub:Hub{publicvoidInsertTask(TaskViewModeltask){Clients.Caller.onInsertTa

c# - SignalR .Net 客户端 : How do I send a message to a Group?

我正在使用SignalRWiki入门中心页面中的示例聊天应用程序。我已经扩展它以添加组支持并且它工作正常。但是,现在我想从外部控制台应用程序向群组发送消息。这是我的控制台应用程序代码,下面是我的群组代码。如何从代理向群组发送消息?可能吗?//ConsoleAppusingSystem;usingMicrosoft.AspNet.SignalR.Client.Hubs;namespaceSignalrNetClient{classProgram{staticvoidMain(string[]args){//Connecttotheservicevarconnection=newHubCo

c# - 如何解决 SignalR 在背板横向扩展中的局限性

我使用ASP.NETMVC和C#。我发现SignalR可以实时传输数据,但是signalR有一些限制。accordingtotheissueforthis:使用背板,最大消息吞吐量低于客户端直接与单个服务器节点通信时的吞吐量。这是因为背板将每条消息转发到每个节点,因此背板可能成为瓶颈。此限制是否是一个问题取决于应用程序。例如,这里有一些典型的SignalR场景:服务器广播(例如股票代码):背板很适合这个场景,因为服务器控制消息发送的速率已发送。客户端到客户端(例如,聊天):在这种情况下,背板可能如果消息的数量随消息的数量增加而成为瓶颈客户;也就是说,如果消息的速率按比例增长更多客户加入