2013-05-12 11 views
8

Ayrıca websockets node-http-proxy ile çalışmak için çalışıyorum çalışıyorum.Proxytable ve websockets ile düğüm http proxy

var options = { 
router: { 
    'a.websterten.com': '127.0.0.1:150', 
    'b.websterten.com' : '127.0.0.1:151', 
} 
}; 

var server = httpProxy.createServer(options); 

Denedim:

server.on('upgrade', function (req, socket, head) { 
    server.proxy.proxyWebSocketRequest(req, socket, head); 
}); 

Ama işe görünmüyor fark i proxytable kullanıyorum edilir. (Doğrudan giderseniz gayet iyi çalışıyor) Hızlı bir kontrol

Ayrıca server.on('upgrade',..

nasıl alabilirim bir WebSocket istek üzerine ateş etmiyor çeklerin bir çift yapıyor WebSockets çalışma Chrome'dan Unexpected response code: 400 olsun gösterir olup olmadığını görmek için benim proxy sunucu websockets doğru yönlendirmek için?

Ben de düğüm 0.8.23 yanı sıra düğüm 0.10.x (düğümün sonraki sürümleri bir bellek sızıntısı sorunu var ama alışkanlık ya 0.8.23 üzerinde çalışmak)

cevap

2

zaman size bu denedim httpProxy.createServer() kullanın, http-proxy otomatik olarak işlediği için upgrade olayını işlemek için gerekli değildir. Böylece, server.on('upgrade', ...), asla yanmaz çünkü http-proxy zaten dahili olarak işlemektedir. Eğer httpProxy.createServer için ara katman işlevlerini geçmesi veya çoktan el http.createServer() ile sunucu oluştururken

sen server.on('upgrade') yapmanız gereken tek zamandır. Başka bir deyişle, websockets yapılandırmanızdaki proxy üzerinden "sadece çalışmalıdır".


Bununla birlikte, http-vekaleten WebSocket desteği için streams2 (düğüm çekirdek were completely rewritten in 0.10 akışını API) currently broken on node v0.10.x olup. Ayrıca, http-proxy'nin en son sürümü (0.10.2), akışlar2 sorunu için botched fix nedeniyle düğümde v0.8'de kırılmıştır. http-vekil kendi iç görün yeniden yazmak için streams2 ile başa çıkmak için için

  1. Bekle:

    Yani iki seçenek var.

  2. Düğüme v0.8.23 ve http-proxy 0.10.1 'e geçin. (En azından 1. olana kadar.)

(Sen npm install [email protected] çalıştırarak npm modüllerinin eski sürümleri yükleyebilirsiniz.)

+0

ben hataları almak bile yok, ve yükseltme hiçbir şey olmuyor olmadan, bu denedi ya & sonunda çöküyor. Proxy tablosu örneğini kullanıyorum ve sadece hostname'leri başkalarına değiştirdim, başka düzenleme yok – Akshat

+0

@Akshat: Daha fazla araştırma, aslında 0.10 düğümüyle uyumsuzluğunu ortaya koyuyor. Güncellemeye bakın. – josh3736

+0

Gördüğünüz gibi, son güncellemeyle birlikte 0.8.2 ile de sorun yaşadım. Bunun için bir çözüm yok mu? – Akshat