socket.io客户端库在哪里?

据我所见,如果node.js没有被用作web服务器,我们不知道在哪里定位socket.io的客户端脚本。 我find了一个客户端文件的完整目录,但是我需要它们的组合版本(比如在使用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 install socket.io-client --save 

并在您的应用程序的HTML中包含以下内容:

 <script src="/bower_components/socket.io-client/socket.io.js"></script> 

这样,你可以像对待任何其他托pipe包一样对待你的客户端的socket.io部分。

我认为更好和正确的方法是从这个url加载它

 src="/socket.io/socket.io.js" 

在socket.io运行的域上。 这个解决scheme的好处是,如果你更新你的socket.io npm模块,你的客户端文件也会被更新,你不必每次都手动复制它。

我在Matt Way的回答中使用了bower,而且效果很好,但是库本身没有自己的bower.json文件。

这意味着我正在使用的bower-main-files Gulp插件来查找我的依赖关系的JS文件没有插入到socket.io中,并且在加载页面时出现错误。 为我的项目的bower.json添加一个覆盖工作解决了这个问题。

先用凉亭安装库:

 bower install socket.io-client --save 

然后将重写添加到您的项目的bower.json中:

 "overrides": { "socket.io-client": { "main": ["socket.io.js"] } } 

对于运行wiredep并获取“socket.io-客户端没有注入到您的文件”的每个人。 错误:

像这样修改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> 

我创build了一个可以像这样安装的bower兼容的socket.io-client:

 bower install sio-client --save 

或用于开发用途:

 bower install sio-client --save-dev 

链接回购

如果你使用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>