web-dev-qa-db-ja.com

socket.io、ioが定義されていません(JSエラー)

私はsocket.ioで始めました、クライアントページでJSエラーを出します

ioは定義されていません

これを修正するには?

24
Mark

<script src="http://yournodeserver/socket.io/socket.io.js"></script>コードに

23
Emmerman

または、 Socket.io CDN を使用できます。

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

急行でも同じ問題に直面しました。スクリプト内にserver:portを入れても機能しません。サーバーが起動した後、ソケットにそのポートをリッスンさせますが、それは間違いだったと思います。

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>
7
deven98602

私のサーバー(CDNではない)がsocket.io.jsスクリプトを提供しているソケットアプリがあります。したがって、クライアントのHTMLコードにスクリプトタグを含める必要があるとEmmermanが言っているのは正しいですが、バックエンドがダウンしている場合、アセットは読み込まれません。 1つのオプションは、socket.ioを使用する前にioをチェックするクライアント側JSスクリプトを作成することです。存在しない(未定義/ null)場合は、「サーバーダウン」などの条件付きで表示するか、サーバーが復元されるまで定期的にチェックし続けるタイマーを設定します。

[更新2]スクリプトタグを含める必要があり、ioオブジェクトの存在を確認し、10秒後にwindow.location.reload()を実行します(setTimeoutを使用)(最終的にはうまくいけば、ロードされたスクリプトとioが存在することを確認できます。その後、ソケットサーバーに接続できます。)

[更新] HTMLスクリプトタグを使用するのではなく、ajax呼び出しでスクリプトをロードしています。次に、タイマーを使用して、スクリプトが読み込まれるかどうかを定期的にチェックします。最終的には、サーバーが復元または再起動されたときに読み込まれます。 JSスクリプトを動的にロードするjQuery参照: http://api.jquery.com/jQuery.getScript/

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

これは、含まれるsocket.ioの最新バージョンです。

1
Sangram Singh

http://socket.io/download/ -最新のCDNの公式ページ。

0
Tally Barak

クライアントコードを、jQueryまたは他のライブラリに類似した関数の '$(document).ready()'にラップします。これにより、ライブラリがロードされた後にコードが確実に実行されます。

0
Garlou