【问题标题】:SignalR backplane with AWS ElastiCache Redis failed带有 AWS ElastiCache Redis 的 SignalR 背板失败
【发布时间】:2017-01-27 20:43:35
【问题描述】:

我在 AWS EC2 中有 SignalR 服务。 我想用 Redis 引擎 Elasticache 设置背板。 我可以使用redis-cli工具成功连接SignalR服务器中的Easticache。

C:\>redis-cli -h server.cache.amazonaws.com -p 6379 ping
PONG

但是当我把backpalne设置代码,SignalR返回

SignalR:尝试连接时 webSockets 传输超时。

无背板设置代码

GlobalHost.DependencyResolver.UseRedis(server, port, string.Empty, appName);

效果很好。

错误信息如下

[03:31:21 GMT+0000(协调世界时间)] SignalR:正在与 'http://server.elb.amazonaws.c...Protocol=1.5&connectionData=%5B%7B%22name%22%3A%22notificationhub% 协商22%7D%5D'.VM47 jquery.signalR-2.2.0.min.js:8 [03:31:28 GMT+0000(协调世界时间)] SignalR:webSockets 传输开始。 VM47 jquery.signalR-2.2.0.min.js:8 [三时31分28秒GMT + 0000(协调通用时间)] SignalR:连接到的WebSocket端点“WS://server.elb.amazonaws.com/signalr/connect运输=&的WebSockets clientProtocol = 1.5&connectionToken = xSWImxTslxzzk4toiMzjuNod56GaOF27NaT1t1ZkACbNqMC%2BhVRvEFtc2MesygYDRY1ULm%2BtFSo4djNegjcNtuD6lpk1pQQ7ecVZoLFr6aPJ %2FP0HHhUmAjgOVs1FyqQt&connectionData=%5B%7B%22name%22%3A%22notificationhub%22%7D%5D&tid=9'。 VM47 jquery.signalR-2.2.0.min.js:8 [03:31:28 GMT+0000(协调世界时间)] SignalR:webSockets 传输开始。 VM47 jquery.signalR-2.2.0.min.js:8 [03:31:33 GMT+0000(协调世界时间)] SignalR:尝试连接时 webSockets 传输超时。 VM47 jquery.signalR-2.2.0.min.js:8 [03:31:33 GMT+0000(协调世界时间)] SignalR:关闭 Websocket。 的index.html#/简介:1个WebSocket连接到“WS://server.elb.amazonaws.com/signalr/connect运输=&的WebSockets clientProtocol = 1.5&connectionToken = xSWImxTslxzzk4toiMzjuNod56GaOF27NaT1t1ZkACbNqMC%2BhVRvEFtc2MesygYDRY1ULm%2BtFSo4djNegjcNtuD6lpk1pQQ7ecVZoLFr6aPJ%2FP0HHhUmAjgOVs1FyqQt&connectionData =%5B%7B%22name%? 22%3A%22notificationhub%22%7D%5D&tid=9' 失败:在建立连接之前关闭 WebSocket。 VM47 jquery.signalR-2.2.0.min.js:8 [03:31:33 GMT+0000(协调世界时间)] SignalR:Websocket 已关闭。

更新

我在服务器本地安装redis后,出现了同样的问题。 看起来不是 AWS Elasticache 问题。

【问题讨论】:

  • 尝试在本地运行服务器连接到 AWS 上的 Redis 并检查您的服务器中是否有任何异常。
  • 谢谢,我安装了本地Redis,出现webSockets传输超时问题。这不是 AWS Elasticache 问题。但我的服务器也不例外。
  • 我们的想法不是在本地安装 Redis,而是在 AWS 上使用 Redis 和在本地运行的 SignalR 服务器,如果遇到同样的问题,排除故障会容易得多。
  • 对不起,我的意思是我在带有 SignalR 服务器的 AWS EC2 实例上安装了 Redis。

标签: javascript amazon-web-services redis signalr


【解决方案1】:

原来是ELB问题,我在SignalR服务器中增加TransportConnectionTimeout值。

GlobalHost.Configuration.TransportConnectTimeout = TimeSpan.FromSeconds(1);

问题解决了。

【讨论】:

  • 那么您最终是使用 Elasticache for Redis 还是手动安装在 EC2 上的 Redis?您的 redis 设置是否已集群化?
猜你喜欢
  • 2018-07-22
  • 1970-01-01
  • 2018-03-15
  • 2021-07-13
  • 2019-11-28
  • 2020-04-30
  • 1970-01-01
  • 2021-08-13
  • 2022-10-24
相关资源
最近更新 更多