关于将html5websockets或signalR用于我们将集成到我们的asp.netmvc3应用程序中的聊天,我陷入了两难境地我的困境1.signalR实现longpolling为什么要用?2.longpolling不好吗?3.websockets和longpolling完全不同?4.只有IIS8支持websockets吗?5.我可以使用Html5websockets将聊天数据保存到SQL数据库吗?6.是否有使websockets在IIS7和更高版本上工作的解决方法(我将仅使用chrome浏览器)谢谢你的包容 最佳答案 如果它实
我有一个Java服务器执行一些工作并将其结果发布到Redis上。我想将这个结果实时发送给一些用户;所以我实现了一个基于SignalR的解决方案。结果必须对很多客户端可用,而SignalR只是其中之一;因此无法修改服务器以完全符合我的要求。基本上,这就是我所拥有的:服务器->Redis->SignalR->浏览器我认为这是一个丑陋的解决方案,因为它使用Lazy类型来监听订阅的channel并调用委托(delegate)来告诉SignalR推送数据。最好的解决方案是将数据直接从服务器推送到信号器,但我无法更改服务器发布结果的方式。我想到了一个可执行文件充当Redis和Signalr之间的桥
SignalRbackplaneSync是否像Groups.Add中那样跨服务器同步连接的组?我知道它会发布消息,但不清楚组是否也同步。本质上我想知道如果网络场中的服务器出现故障,其他服务器是否会配置相同的组?如果是,是否有任何文档支持这一点?谢谢, 最佳答案 是的,背板确实维护组,它将serverid添加到组中,因此您基本上拥有一组组。父组是场中的serverid。它解释得不好,但你可以在这里找到解释:http://www.asp.net/signalr/overview/performance/scaleout-in-signa
我们的服务器每天在某个特定时间段内扩展1-3个实例。我们有AzureRedis背板用于信号器的连接持久性。除此之外,服务器没有启用ARR亲和性。顺便说一句,我们在Android上使用ServerSentEvents,在iOS上使用WebSocket。问题是我们的移动用户(motocouriers)在移动信号较弱时经常断开或重新连接到SignalR服务器,因为他们的提供商。我们已经检查了移动端的所有内容。我们非常确定我们一次只有一个信号器连接。除此之外,当它们连接时,我们将它们的connectionids存储在持久存储(SQL数据库)中。在向用户发送消息时,我们选择存储在数据库中的最新连
我们正在运行两个带有signalR2.2.0和StackExchange.Redis.StrongName1.0.394的服务器,有时我们会遇到一些错误,例如:StackExchange.Redis.RedisConnectionException:SocketFailureonEVAL我查看了redis日志,没有发现任何问题,而且性能一直很好。(我们还使用Redis进行缓存)。我不知道发生了什么,我想知道我是否可以忽略这个错误。我还询问了主办方是否存在任何已知的网络问题,他们告诉我没有。问题不是很具体,但我目前不知道从哪里可以获得更多信息。 最佳答案
在ASP.NET中使用发布/订阅Redis背板设置SignalR非常简单-请参阅here.我们今天可以在ASP.NETCore中做到这一点吗?ASP.NETCore包准备好了吗?它不需要这么容易配置。 最佳答案 就在那里,我的同事最近实现了它。但是由于我们在应用程序前面有一个反向代理,这给我们带来了问题(确保您的代理也接受HTTP更新动词。)自从新的IOC模型以来,一切似乎都非常容易配置。使用:Microsoft.AspNetCore.SignalR.Server。我不确定(很确定不是)生产准备就绪:https://dotnet.m
我们正在为我们的SignalR应用实现横向扩展,并试图避免集群中的单点故障。因此,需要多个Redis消息总线服务器。实现RedisSentinel的问题在于,在故障转移时,客户端需要连接到新的端点[地址],这将需要重新启动SignalR应用程序(在Application_Start()中定义的Redis端点)。不是一个选项。我正在尝试了解Booksleeve是否/如何提供帮助,并希望得到一些解释。问题是我们只能为消息总线定义一个端点。硬件解决方案目前不是一种选择。SignalR应用程序是否会连接到维护主/从列表的Booksleeve包装器?使用Azure服务总线的另一种选择。然而,in
SignalR使用AzureWeb角色进行惊人的扩展。但是,当我在Azure辅助角色中使用自托管的OWIN项目时,添加多个实例时SignalR将开始出现问题。作为记录,我的项目使用Redis作为背板。当Azure辅助角色实例增加到超过一个时,客户端连接将随机失败并出现错误“ConnectionId的格式不正确”。我认为这是由于负载平衡导致单个客户端的协商跨越多个服务器时造成的;我不相信参与协商的多个服务器可以解密数据(幕后的DPAPI?)。我尝试在app.config中设置validationKey和decryptionKey但这似乎没有什么区别;问题依然存在。同样,该项目可以作为We
我有以下情况:我有一个SignalR应用程序,我在其中使用Autofac作为依赖项解析器。publicclassStartup{publicvoidConfiguration(IAppBuilderapp){varcontainer=newAutofacContainer().Container;varresolver=newAutofacDependencyResolver(container);resolver.UseRedis("serverIp",portNumber,"password","channelName");app.UseAutofacMiddleware(cont
我们的应用程序使用SignalR。我们需要支持负载均衡部署以实现高可用性。我们还在我们的应用程序中使用集群Redis进行缓存。我们正在考虑使用与SignalR背板相同的Redis集群来横向扩展。但是GlobalHost.DependencyResolver.UseRedis()不支持将多个服务器作为参数传递。如果可能的话,请指导我们如何实现同样的目标? 最佳答案 不是在UseRedis()函数中添加特定的redis服务器/端口,而是发送一个RedisScaleoutConfiguration,它将接受一个字符串作为到redis的连接