2014-09-17 5 views
11

У меня есть прокси-сервер, который работает только на моем сервере node.js для путей, которые находятся с /mysubdir Как мне настроить socket.io для этой ситуации?Как получить запуск socket.io для подкаталога

В моем клиентском коде я пробовал:

var socket = io.connect('http://www.example.com/mysubdir'); 

но потом я заметил, что основной socket.io (или engine.io) HTTP запросы бьют

http://www.example.com/socket.io/?EIO=3&transport=polling&t=1410972713498-72` 

Я хочу, чтобы ударить

http://www.example.com/mysubdir/socket.io..... 

Есть ли что-то, что мне нужно настроить на клиенте и на сервере?

ответ

14

В моем сервере я должен был

var io = require('socket.io')(httpServer, {path: '/mysubdir/socket.io'})` 

В моем клиенте я должен был

<script src="http://www.example.com/mysubdir/socket.io/socket.io.js"></script> 

, а также

var socket = io.connect('http://www.example.com', {path: "/mysubdir/socket.io"});` 
+3

var io = require ('socket.io') (http, {path: '/mysubdir/socket.io'}) - работал для меня – reabow

1

Ответ на @Drew-LeSueur является правильным для Socket.io> = 1,0.

Как я использовал socket.io 0.9, я нашел the old way of doing it в документе.

// in 0.9 
var socket = io.connect('localhost:3000', { 
    'resource': 'path/to/socket.io'; 
}); 

// in 1.0 
var socket = io.connect('localhost:3000', { 
    'path': '/path/to/socket.io'; 
}); 

Обратите внимание, что / появляется в качестве первого символа в новом path вариант.

2

В моем случае я использую nginx в качестве обратного прокси. При опросе я получал 404 ошибки. Это решение для меня.

URL-адрес на сервер узла является https://example.com/subdir/

В app.js я экземплярам сервера Io с

var io = require('socket.io')(http, {path: '/subdir/socket.io'}); 

В HTML я использовал

socket = io.connect('https://example.com/subdir/', { 
    path: "/subdir" 
}); 

Приветствия,
Люк.

 Смежные вопросы

  • Нет связанных вопросов^_^