2011-04-12 69 views

回答

18

<script src="http://yournodeserver/socket.io/socket.io.js"></script>到你的代碼

+18

我試過這個在我的情況下它沒有解決問題。 – Shawn 2012-08-02 03:44:46

+1

@Shawn文件的順序可能是問題。 你的外部js文件應該在socket.io.js之後導入。 – 2014-04-30 06:12:45

+0

我有400個錯誤。 – Keith 2015-11-26 17:53:30

28

或者您可以使用Socket.io CDN

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

哇,我需要這樣的事情。謝謝! – 2013-10-25 13:18:55

+0

向下,發生了什麼? – Hotgeart 2014-09-03 08:30:15

+0

看來URL已經改變了http:// socket。io/blog/introduction-socket-io-1-0 /#cdn-delivery – 2014-09-03 09:48:03

2

我在我的服務器(而不是CDN)正在服了socket.io.js腳本套接字應用程序。因此,儘管Emmerman正確地說您需要在您的客戶端HTML代碼中包含腳本標記,但是如果您的後端發生故障,資產將不會被加載。一種方法是在嘗試使用socket.io之前編寫一個客戶端JS腳本來檢查io。如果它不存在(undefined/null),那麼你可以有條件地顯示「服務器關閉」之類的東西,或者在我的情況下,我將設置一個定時器,以便定期檢查直到服務器恢復。

[UPDATE 2]必須包含腳本標記,檢查io對象是否存在,並在10秒後執行window.location.reload()(使用setTimeout)(最終希望找到腳本已加載和io存在,之後我可以連接到套接字服務器。)

[更新]我使用ajax調用而不是使用html腳本標記來加載腳本。然後,使用計時器,我會定期檢查腳本是否會加載 - 最終會在服務器恢復/重新啓動時進行檢查。 jQuery引用動態加載JS腳本:http://api.jquery.com/jQuery.getScript/

+0

非常酷的解決方案,如果您不想從第三方域加載庫。感謝分享這個。保存我的一天:) – Cha0s 2016-12-31 23:37:54

5

我在使用express時遇到了同樣的問題。即使把服務器:端口在腳本中不會work.After服務器啓動後我會做窩聽那個端口,這是錯誤,我就guess.Changing以下工作正常

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

在客戶端我只是包括腳本

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

我會用這個而不是接受的答案,以便它保持在本地和域上你有這個相同。另一個會工作,但必須改變。 – WallMobile 2013-01-09 22:16:52

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

這是被列入socket.io的最新版本。

+0

這一切都爲我工作時,一切都失敗了。 – 2014-02-06 22:59:11

1

將您的客戶端代碼包裝在'$(document).ready()'中,用於jQuery或其他庫類似的函數。這樣你就可以確保你的代碼在庫加載後運行。