2013-03-21 2 views
2

Я пытаюсь получить node-http-proxy с socket.io для работы, но он всегда возвращается к xhr, websockets не будет работать, хотя я подключаюсь к событию обновления, как описано в документах node-http-proxy.node-http-proxy socket.io websocket connection

var httpProxy = require ("http-proxy"); 

var server = httpProxy.createServer (function (req, res, proxy) { 
    var buffer = httpProxy.buffer (req); 
    proxy.proxyRequest (req, res, { 
     host : "localhost", 
     port : 8001, 
     buffer : buffer 
    }); 
}); 
server.listen (80); 

server.on('upgrade', function (req, socket, head) { 
    server.proxy.proxyWebSocketRequest(req, socket, head, { host : "localhost", port : 8001 }); 
}); 

приложение явно работает на локальном хосте: 8001 и, если я разрешу все методы транспорта будет работать нормально, как он использует XHR следует. Если бы я заставить его использовать WebSockets светлячок будет сказать

Firefox can't establish a connection to the server at ws://localhost/socket.io/1/websocket/cNp5J80KAWkXqjE6OZOt. @ http://localhost/socket.io/socket.io.js:2371 

Только с помощью метода по умолчанию

httpProxy.createServer (8001, "localhost").listen (80); 

результаты в одной и той же ошибки.

+0

Вам не один и тот же код на всех, как я ... Можете ли вы связать документы, где вы нашли этот код ? Тем временем вы можете посмотреть мой код в [этот ответ] (http://stackoverflow.com/questions/15411042/how-to-run-node-js-app-on-port-80-using-http-proxy/15427378 # 15427378) Это работает для меня. Если вы используете его только с одним доменом, операторы switch могут быть удалены. –

+0

Я получил код отсюда: https://github.com/nodejitsu/node-http-proxy#proxying-websockets (строка буфера, в которой у меня была остаточная часть эксперимента, я удалил ее сейчас: /) С ваш код у меня все еще такая же проблема. Могут ли быть проблемы с версиями? Я запускаю node-http-proxy 0.10.0, socket.io 0.9.13 и узел 0.10.0. – tom

ответ

4

Прокси-серверы с узлом-http-прокси, по-видимому, разбиты на узле 0.10. Вот запрос на перенос, который пытается его исправить, но см. Мои комментарии: исправление не полностью работает.

https://github.com/nodejitsu/node-http-proxy/pull/402

+0

Thx David ... и мне было интересно, почему мои приложения не работают над новой установкой node.js -.- – ayk

2

Я в настоящее время использую (последнюю? V1.0.1) узел-клиент-прокси и я нашел WebSockets было действительно работает надежно после щипка (см.ниж) на узел v0.10.20. По умолчанию, node-http-proxy, похоже, поддерживает xhr-опрос, а при отключении соединений с websocket.

В «examples», я добавил флаг «Ws» истинный

var http = require('http'), 
    httpProxy = require('../../lib/http-proxy'); 

httpProxy.createServer({ 
    target:'http://somehost.tld:5000', 
    ws : true //added Websockets Flag TRUE 
}).listen(80);//arbitrary port 
Смежные вопросы