Am un site web pe Apache. Am două aplicații care folosesc socket-uri web, una se bazează pe Node, care folosește portul 3000 și cealaltă se bazează pe Phoenix, care folosește portul 4000. Ambele aplicații folosesc și un proxy invers. De exemplu, am ceva de genul asta:
<Location /node/>
ProxyPass http://127.0.0.1:3000/
ProxyPassReverse http://127.0.0.1:3000/
</Location>
<Location /phoenix/>
ProxyPass http://127.0.0.1:4000/
ProxyPassReverse http://127.0.0.1:4000/
</Location>
Cu toate acestea, întâmpin probleme la funcționarea socket-urilor web. Am ceva de genul acesta configurat pentru aplicația Node (în afara contextului <Location>):
RewriteCond %{QUERY_STRING} transport=sondaj [NC]
RewriteRule /(.*) http://127.0.0.1:3000/$1 [P]
RewriteCond %{HTTP:Upgrade} websocket [NC]
RewriteRule /(.*) ws://127.0.0.1:3000/$1 [P]
Mi-am dezvoltat aplicația Node acum câțiva ani și totul a funcționat perfect. Cu toate acestea, în prezent dezvolt aplicația Phoenix și nu știu cum să mă ocup de direcționarea prizelor. În cele din urmă, intenționez să renunț complet la aplicația Node, dar trebuie să o mențin în funcțiune pentru utilizatorii noștri până când noua aplicație este dezvoltată. Cu toate acestea, încă am nevoie de noua aplicație care rulează în același timp pe site, ca să o pot dezvolta. Ar fi bine ca socketurile să funcționeze în ambele aplicații în același timp.