Bu eklenti, @Andrew Moss'un ' VirtualHost
socket.io 1.0 ile çalışacak şekilde nasıl doğru bir şekilde yapılandırılacağı konusundaki cevabına! CentOS ile ilgili kısmı atlamaktan çekinmeyin!
CentOS 6’da kalmışsanız, işte nasıl yapılacağı:
mod_proxy_wstunnel
Modül için desteklenen kaynağı buradan indirin (Gist'i klonlayın veya dosyaları tek tek indirin)
- Oluşturmak için gereken her şeyi yükleyin:
yum install make gcc httpd-devel
- Bir Kurulum RPM Yapı ortamı (temelde ayrıcalığı olmayan bir kullanıcı ve bazı dizinleri)
- Kopya
.c
içine -Dosya SOURCES
ortamının alt klasör ve .spec
içine -Dosya SPECS
alt klasöründe.
- Çalıştırmak
rpmbuild -ba mod_proxy_wstunnel.spec
- Paket şimdi
SRPMS
alt klasörde
- Paketi yükleyin:
rpm -i /path/to/package.rpm
- kâr
Bu aynı zamanda modülü otomatik olarak Apache'ye yükleyecektir, bu yüzden onu yeniden başlatmanız gerekir service httpd restart
.
VirtualHost
Aslında Socket.io sunucusuna ve istemci betiğine hizmet etmek için (varsayılan olarak mevcut olan) a ayarlanması http://your.server/socket.io/socket.io.js
, Apache 2.2'de, modüldeki bir Hatamod_proxy
nedeniyle biraz daha karmaşıktır :
Aşağıdaki yeniden yazma kuralı verildiğinde:
RewriteRule ^/ws(.*)$ ws://localhost:9000/ws [P]
mod_rewrite
Erişim günlüğünün gösterdiği şekilde buna bir dosya yolu olarak davranır:
[26/Sep/2013:09:46:07 -0400] "GET /ws://localhost:9000/ws HTTP/1.1" 400 317
Bu nedenle, yeniden yazma kuralında -protocol'u kullanamazsınızws
, çünkü bu dahili olarak bir HTTP GET isteğine dönüşür.
Yine de bir geçici çözüm var:
<VirtualHost *:80>
ServerName your.server
# Proxy socket.io Websocket
RewriteEngine On
# socket.io 1.0+ starts all connections with an HTTP polling request
RewriteCond %{QUERY_STRING} transport=polling [NC]
RewriteRule /(.*) http://localhost:8081/$1 [P]
ProxyRequests Off
# Explicitly send the request for the client-script to HTTP:
ProxyPass /socket.io/socket.io.js http://localhost:8081/socket.io/socket.io.js
ProxyPassReverse /socket.io/socket.io.js http://localhost:8081/socket.io/socket.io.js
# Anything else goes to the WebSocket protocol:
ProxyPass /socket.io/ ws://localhost:8081/socket.io/
ProxyPassReverse /socket.io/ ws://localhost:8081/socket.io/
# Any additional stuff (the actual site) comes here
ProxyPass / http://localhost:8081/
ProxyPassReverse / http://localhost:8081/
</VirtualHost>
Bu her şeyin gönderilmesi emin kılan /socket.io
gider ws://
ve istemci kütüphanesi için isteğini (WebSockets kullanılmadığı bir geri dönüş mekanizması olan) uzun yoklama için istek dışında -Protokolü.
./buildconfig
configure dosyası oluşturmak için koşmam gerekiyordu . Ve benim yüklememi söyleyen birkaç bağımlılık vardı.