Ho un'applicazione Rails 3.2 con gems websocket-rails 0.7.Websocket-rails non funziona su ambiente di produzione con Nginx e Unicorn
Sulla macchina di sviluppo, tutti funzionano bene
In ambiente di produzione, uso Nginx/1.6 come server proxy e Unicorn come server HTTP. Thin è usato in modalità standalone (dopo 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";
}
Sul lato back-end, ho il seguente codice per la notifica di invio ai clienti
WebsocketRails[:callback_requests].trigger 'new', call_request
Sul lato client, ho ottenuto una connessione utilizzando:
dispatcher = new WebSocketRails window.location.host + ':3001/websocket'
channel = dispatcher.subscribe 'callback_requests'
Ma la notifica non arriva al cliente.
problema correlati su github - github.com/websocket-rails/websocket-rails/issues/211
hai mai risolvere il problema? – jay
@jay Sono stato in grado di risolvere questo problema attraverso l'uso di thin come server http generico, senza unicorno. Ma per unicorn + thin (per websocket) + nginx non ho trovato una soluzione – MaxKonin
su quale porta hai avviato Nginx? Il tuo codice client sta chiamando 3001, ma poi stai inoltrando a 3001. Nginx e Thin non possono aver entrambi servito 3001 sullo stesso server. – toxaq