私が見た限り、socket.io
がWebサーバーとして使用されていない場合、node.js
のクライアント側スクリプトの場所についての説明はありません。クライアント側ファイルのディレクトリ全体を見つけましたが、それらを結合バージョンで必要とします(node.js Webサーバーを使用するときに提供されるように)。何か案は?
socket.io.jsは、クライアント側のhtmlに配置するものです。何かのようなもの:
<script type="text/javascript" src="socket.io.js"></script>
私のスクリプトはあります:
/usr/local/lib/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js
そのファイルをサーバーが提供する場所にコピーします。
これを行うために私が見つけた最良の方法は、 bower を使用することです。
bower install socket.io-client --save
アプリのHTMLに次を含めます。
<script src="/bower_components/socket.io-client/socket.io.js"></script>
そうすれば、他の管理パッケージを扱うのと同じ方法で、クライアントのsocket.io部分を扱うことができます。
私はこのURLからそれをロードするのが良いと適切な方法だと思います
src="/socket.io/socket.io.js"
socket.ioが実行されているドメイン上。このソリューションの利点は、socket.io npmモジュールを更新すると、クライアントファイルも更新されるため、毎回手動でコピーする必要がないことです。
Matt Wayの答えで示唆されているように、私はbowerを使用しましたが、それはうまく機能しましたが、ライブラリ自体には独自のbower.json
ファイルがありませんでした。
これは、依存関係のJSファイルを見つけるために使用しているbower-main-files
Gulpプラグインがsocket.ioをプルせず、ページの読み込み時にエラーが発生することを意味していました。プロジェクトのbower.json
にオーバーライドを追加すると、問題が回避されました。
最初にbowerを使用してライブラリをインストールします。
bower install socket.io-client --save
次に、オーバーライドをプロジェクトのbower.jsonに追加します。
"overrides": {
"socket.io-client": {
"main": ["socket.io.js"]
}
}
Wireepを実行し、「socket.io-clientがファイルに挿入されませんでした」を取得するすべてのユーザー向け。エラー:
次のように、wiredepタスクを変更します。
wiredep: {
..
main: {
..
overrides: {
'socket.io-client': {
main: 'socket.io.js'
}
}
}
Bower.jsonを使用している場合は、socket.io-client依存関係を追加します。
"socket.io-client": "0.9.x"
次に、bower installを実行してsocket.io-clientをダウンロードします。
次に、HTMLにスクリプトタグを追加します。
<script src="bower_components/socket.io-client/dist/socket.io.min.js"></script>
このようにインストールできるbower互換のsocket.io-clientを作成しました:
bower install sio-client --save
または開発用:
bower install sio-client --save-dev
repo へのリンク
https://github.com/btford/angular-socket-io を使用する場合は、必ずindex.htmlを次のようにしてください。
<!-- https://raw.githubusercontent.com/socketio/socket.io-client/master/socket.io.js -->
<script src="socket.io.js"></script>
<!-- build:js({client,node_modules}) app/vendor.js -->
<!-- bower:js -->
<script src="bower_components/jquery/dist/jquery.js"></script>
<script src="bower_components/angular/angular.js"></script>
<!-- ...... -->
<script src="bower_components/angular-socket-io/socket.js"></script>
<!-- endbower -->
<!-- endbuild -->
<script type="text/javascript" charset="utf-8">
angular.module('myapp', [
// ...
'btford.socket-io'
]);
// do your angular/socket stuff
</script>