2016-09-20 81 views
0

我在AWS EC2中擁有SignalR服務。 我想用Redis引擎Elasticache設置背板。 我可以使用redis-cli工具在SignalR服務器上成功連接到Easticache。使用AWS ElastiCache Redis失敗的SignalR背板

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 (Coordinated Universal Time)] SignalR: Negotiating with '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 (Coordinated Universal Time)] SignalR: webSockets transport starting. VM47 jquery.signalR-2.2.0.min.js:8 

[03:31:28 GMT+0000 (Coordinated Universal Time)] SignalR: Connecting to websocket endpoint 'ws://server.elb.amazonaws.com/signalr/connect?transport=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 (Coordinated Universal Time)] SignalR: webSockets transport starting. VM47 jquery.signalR-2.2.0.min.js:8 

[03:31:33 GMT+0000 (Coordinated Universal Time)] SignalR: webSockets transport timed out when trying to connect. VM47 jquery.signalR-2.2.0.min.js:8 

[03:31:33 GMT+0000 (Coordinated Universal Time)] SignalR: Closing the Websocket. 
index.html#/intro:1 WebSocket connection to 'ws://server.elb.amazonaws.com/signalr/connect?transport=webSockets&clientProtocol=1.5&connectionToken=xSWImxTslxzzk4toiMzjuNod56GaOF27NaT1t1ZkACbNqMC%2BhVRvEFtc2MesygYDRY1ULm%2BtFSo4djNegjcNtuD6lpk1pQQ7ecVZoLFr6aPJ%2FP0HHhUmAjgOVs1FyqQt&connectionData=%5B%7B%22name%22%3A%22notificationhub%22%7D%5D&tid=9' failed: WebSocket is closed before the connection is established. VM47 jquery.signalR-2.2.0.min.js:8 

[03:31:33 GMT+0000 (Coordinated Universal Time)] SignalR: Websocket closed. 

更新

後,我在服務器本地安裝的Redis,就會發生同樣的問題。 它看起來不像AWS Elasticache問題。

+0

嘗試在AWS上運行本地連接到Redis的服務器,並檢查您的服務器是否有任何異常。 – Pawel

+0

謝謝,我安裝了本地Redis,webSockets傳輸超時問題已經發生。這不是AWS Elasticache問題。但我沒有任何例外我的服務器。 – Chris

+0

這個想法不是在本地安裝Redis,而是在AWS上使用Redis,並在本地運行SignalR服務器,如果遇到同樣的問題,它將更容易排除故障。 – Pawel

回答

1

原來ELB問題,我在SignalR服務器中增加了TransportConnectionTimeout值。

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

問題已解決。