Ich habe Rails 3.2 Anwendung mit Edelstein Websocket-Schienen 0,7.Websocket-Schienen funktioniert nicht auf Produktionsumgebung mit Nginx und Unicorn
Auf Entwicklungsmaschine, die alle gut funktionieren
auf Produktionsumgebung, verwende ich Nginx/1.6 als Proxy-Server und Unicorn als HTTP-Server. Thin wird im Standalone-Modus verwendet (nach https://github.com/websocket-rails/websocket-rails/wiki/Standalone-Server-Mode).
nginx config:
location /websocket {
proxy_pass http://localhost:3001/websocket;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
Auf Backend-Seite habe ich den folgenden Code für Sende Benachrichtigung an Kunden
WebsocketRails[:callback_requests].trigger 'new', call_request
Auf Client-Seite, bekam ich eine Verbindung mit:
dispatcher = new WebSocketRails window.location.host + ':3001/websocket'
channel = dispatcher.subscribe 'callback_requests'
Aber die Benachrichtigung kommt nicht zum Client.
Verwandte Ausgabe auf Github - github.com/websocket-rails/websocket-rails/issues/211
haben Sie jemals dieses Problem beheben? – jay
@jay Ich konnte dieses Problem durch die Verwendung von Thin als allgemeine http-Server, ohne Einhorn zu lösen. Aber für Einhorn + Thin (für Websocket) + nginx habe ich keine Lösung gefunden – MaxKonin
An welchem Port hast du Nginx an? Ihr Client-Code ruft 3001 auf, aber Sie leiten auch an 3001 weiter. Nginx und Thin können nicht beide auf demselben Server 3001 bereitgestellt haben. – toxaq