Saya mencoba mengkonfigurasi Apache 2.4 untuk mem-proxy-kan koneksi websocket untuk socket.io ke server websocket node.js, menggunakan mod_proxy_wstunnel. Kami memiliki ini berfungsi dengan baik dengan socket.io 0.9, tetapi dengan rilis 1.0 mereka mengubah soket endpoint menjadi parameter kueri, dan sekarang saya mengalami kesulitan mengkonfigurasi apache dengan instruksi proxy yang benar.
Semua permintaan ke /socket.io/?EIO=N&transport=websocket
(di mana N adalah angka berapa pun, biasanya 2) perlu diteruskan ke ws://localhost:8082/socket.io/
, tetapi semua permintaan lainnya harus diteruskan ke http://localhost:8082/socket.io/
.
Saya sudah mencoba variasi kedua konfigurasi berikut:
ProxyPass /socket.io/?EIO=2&transport=websocket http://localhost:8082/socket.io/?EIO=2&transport=websocket
ProxyPassReverse /socket.io/?EIO=2&transport=websocket http://localhost:8082/socket.io/?EIO=2&transport=websocket
ProxyPass /socket.io/ http://localhost:8082/socket.io/
ProxyPassReverse /socket.io/ http://localhost:8082/socket.io/
.
RewriteRule /socket.io/?EIO=([0-9]+)&transport=websocket ws://localhost:8082/socket.io/ [QSA,P]
ProxyPass /socket.io/ http://localhost:8082/socket.io/
ProxyPassReverse /socket.io/ http://localhost:8082/socket.io/
Saya telah mengumpulkan dari Google bahwa ProxyPass dan Lokasi tidak dapat menargetkan string kueri, jadi apakah ada opsi lain di sini? Jalur-jalur tersebut dikodekan dengan keras menjadi socket.io, sehingga singkat dari memalsukan seluruh perpustakaan saya tidak dapat mengubahnya.