2012-10-10 14 views
15

Temel bir HTTP sunucusuna sahip bir Node sunucusunda Socket.IO kullanıyorum (Express veya Connect veya benzeri bir şey yok). Varsayılan olarak, Socket.IOSocket.IO statik dosya hizmet yolunu değiştir

/socket.io/socket.io.js

istemci dosyasını sunar
Ben

gibi başka bir şeye o temel yolunu değiştirmek mümkün olmak istiyorum

/foo/bar/socket.io/socket.io.js

bunu yapmak için herhangi bir yerleşik yolu veya Socket.IO kodunu değiştirmeden herhangi bir yolu var mı

? Cevabın, Static modülünde ( require('socket.io').Static)) bulunduğunu düşünüyorum, ancak varsayılanı değiştirmek için kendi başıma yazmamın kısa bir yolunu görüyorum, gitmenin ve davranış şeklini değiştirmenin bir yolunu görmüyorum.

Bunu nasıl yapabilirim?

cevap

21

resource option Eğer socket.io kök dizini yapılandırmak için izin verir daha fazla yapılandırma ziyareti için istemci

<script src="/your/path/to/socket.io.js"></script> 

doğru yolu diyoruz. Varsayılan olarak /socket.io. socket.io en bitiş noktaları aynı zamanda istemci kodu bu ayarı değiştirmek gerekir böylece , servis edildiği

var io = require('socket.io').listen(app, { resource: '/foo/bar/socket.io' }); 

Not Bu ayar da etkilediğini.

var socket = io.connect('http://example.com', { resource: 'foo/bar/socket.io' }); 

(biz burada nedense lider eğik çizgi kullanmayın unutmayın.)

+2

Sadece buraya gelenler için, bu 1.0'dan önceki sürümler içindir. 1.0'dan sonra, bu [http://stackoverflow.com/a/25438603/400654] cevabına bakın. –

2

node_modules/socket.io/node_modules/socket.io-client/dist yolunda istemci tarafı komut dosyasını socket.io.js bulabilirsiniz. Yeni bir klasöre kopyalayın ve wiki

+0

Bu http://socket.io/docs/migrating-from-0-9/#configuration-differences benim için çalıştı tek şeydi. Statik .html sayfasından tamamen farklı bir dizinde node.js şeyleri var. – erapert

+3

Aşağı çekmek değil, ancak bunu yapmak yanlış bir yoldur.Bakım ve güncellemeler (bir sonraki kişi ya da gelecekteki için) zorluklarını artırdı. Bu tür şeyleri düşünen başkaları için samimi bir BTW iyi bir fikirdir: Bu konsept tüm eklentiler ve uzantılar için geçerlidir - sadece yerel destekle bağlantıda kalın. Bir baş ağrısı şimdi daha sonra kurtaracak. – Ben

9

Eğer socket.io sürüm 1.0 kullanıyorsanız, yapılandırma önceki sürümlerine göre farklıdır. istemci tarafında için

:

var socket = io.connect('http://localhost:8888', { path: '/some/path/socket.io' }); 

sunucu tarafında

var socket = require("socket.io")({ resource: '/some/path/socket.io' }); 
12

için socket.io sürümü 1.2.1 için, bu benim için çalışıyor.

Sunucu tarafı:

var io = require('socket.io')({path: '/foo/bar'}); 

İstemci tarafı: Bilginize

var socket = io.connect('http://example.com', {path: '/foo/bar'}); 

:

+0

Bunu değiştirdim ve şimdi konsol günlüğüm aşırı GET çağrıları gösteriyor, muhtemelen yanlış bir şey yapabilir miyim? – Josh

İlgili konular