2014-09-17 13 views
11

Ho un proxy in esecuzione che colpisce solo il mio server node.js per i percorsi che si trovano con /mysubdir Come posso ottenere socket.io configurato per questa situazione?Come ottengo socket.io in esecuzione per una sottodirectory

Nel mio codice cliente che ho provato:

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

ma poi ho notato che il socket.io sottostante (o engine.io) http richieste stanno colpendo

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

voglio che ha colpito

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

C'è qualcosa che devo configurare sul client e sul server?

risposta

14

Nel mio server ho dovuto

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

Nel mio cliente ho dovuto

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

e anche

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

var io = require ('socket.io') (http, {percorso: '/mysubdir/socket.io'}) - ha funzionato per me – reabow

1

La risposta da @Drew-LeSueur è corretto per socket.io> = 1.0.

Mentre stavo usando socket.io 0.9, ho trovato the old way of doing it nel doc.

// 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'; 
}); 

Si noti che un / appare come primo carattere della nuova opzione path.

2

Nel mio caso sto usando nginx come proxy inverso. Stavo ricevendo 404 errori durante il polling. Questa era la soluzione per me.

l'URL al server di nodo è https://example.com/subdir/

Negli app.js ho un'istanza server IO con

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

Nel html ho usato

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

Cheers,
Luca.

Problemi correlati