私はsocket.ioで始めました、クライアントページでJSエラーを出します
ioは定義されていません
これを修正するには?
<script src="http://yournodeserver/socket.io/socket.io.js"></script>
コードに
または、 Socket.io CDN を使用できます。
<script src="https://cdn.socket.io/socket.io-1.0.0.js"></script>
急行でも同じ問題に直面しました。スクリプト内に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>
私のサーバー(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/
<script src="http://cdnjs.cloudflare.com/ajax/libs/socket.io/0.9.16/socket.io.min.js"></script>
これは、含まれるsocket.ioの最新バージョンです。
http://socket.io/download/ -最新のCDNの公式ページ。
クライアントコードを、jQueryまたは他のライブラリに類似した関数の '$(document).ready()'にラップします。これにより、ライブラリがロードされた後にコードが確実に実行されます。