2011-04-12 15 views
20

Sadece socket.io ile başlayan, istemci sayfadaki veren JS Hatasocket.io, io tanımlı değil (JS Hatası)

io

Nasıl tanımlanmamıştır Bunu düzeltmek için? Benim sunucu (bir CDN) socket.io.js senaryoyu hizmet veren bir soket uygulaması varsa

<script src="https://cdn.socket.io/socket.io-1.0.0.js"></script> 

cevap

18

+18

Bu durumu denedim, sorunu çözmedi. – Shawn

+1

@Shawn Dosyaların sırası sorun olabilir. Harici js dosyanız socket.io.js'den sonra alınmalıdır. –

+0

400 hatasım var. – Keith

28

Alternatif Socket.io CDN kullanabileceğiniz koduna <script src="http://yournodeserver/socket.io/socket.io.js"></script> koymak . Dolayısıyla Emmerman, komut dosyası etiketini istemci HTML kodunuza eklemeniz gerektiğini söylerken haklı ise, arka tarafınız aşağıdaysa öğe yüklenmez. Bir seçenek de, socket.io kullanmaya başlamadan önce io için kontrol eden bir istemci tarafı JS komut dosyası yazmanızdır. Eğer mevcut değilse (undefined/null), ya koşullu olarak "server down" gibi bir şey gösterebilir ya da benim durumumda, sunucu geri yüklenene kadar düzenli olarak kontrol etmeye devam eden bir zamanlayıcı ayarlayacağım.

[Update 2] kadar, komut etiketini dahil io nesnenin mevcudiyetini kontrol etmek için olan ve 10 saniye (setTimeout kullanılarak) sonra window.location.reload() yaparak sona erdirilmiş (sonunda umutla komut dosyası yüklü sahipliği yapan ve io var, bundan sonra soket sunucusuna bağlanabiliyorum.)

[UPDATE] Komut dosyasını bir html komut dosyası etiketi kullanmak yerine ajax çağrısı ile yüklüyorum. Sonra zamanlayıcı ile senaryo yüklenirse periyodik olarak kontrol ediyorum - sonunda sunucu geri yüklendiğinde/yeniden başlatıldığında olacak. jQuery ref komutları dinamik olarak yüklemek için: http://api.jquery.com/jQuery.getScript/

+0

Vay, böyle bir şeye ihtiyacım vardı. Teşekkürler! –

+0

Aşağı, Ne oldu? – Hotgeart

+0

Görünüşe göre URL http: // soketini değiştirdi.io/blog/introducing-socket-io-1-0/# cdn-delivery –

2

:

+0

Kitaplığı bir 3. taraf etki alanından yüklemek istemiyorsanız oldukça güzel bir çözüm. Bunu paylaştığın için teşekkürler. Günümü kurtardım :) – Cha0s

5

Express kullanırken aynı sorunla karşılaştım. Hatta sunucuyu koyarak i aşağıda bunu guess.Changing portu komut dosyası içinde sunucu i soket o limana dinlemek yapacak başladı work.After olmaz, bu hata oldu İstemci tarafında

var app = express(); 
app.set('port', process.env.PORT || 3000); 
var server = http.createServer(app); 
var io = require('socket.io').listen(server); 
server.listen(app.get('port')); 

çalışıyor ben sadece senaryoyu

<script src="/socket.io/socket.io.js"></script> 
+0

Bunu kabul edilen yanıt yerine kullanmak istiyorum, böylece localhost'ta ve üzerinde sahip olduğunuz etki alanında aynı kalır. Diğeri işe yarayacak, ancak değiştirilmesi gerekiyor. – WallMobile

1
<script src="http://cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js"></script> 

bu socket.io son sürümü dahil edilecek olan dahildir.

+0

Bu, her şey başarısız olduğunda benim için çalıştı. –

1

İstemci kodunuzu jQuery veya başka bir kitaplık benzeri işlev için bir '$ (document) .ready()' üzerine sarın. Bu şekilde kodunuzun kütüphane arşivi yüklendikten sonra çalıştığından emin olursunuz.