socket.io客户端库在哪里?


76

据我所知,对于socket.io如果node.js不用作Web服务器的客户端脚本,我们没有任何解释。我已经找到了客户端文件的完整目录,但是我需要它们的组合版本(例如在使用node.js网站服务器时提供的版本)。有任何想法吗?

Answers:


68

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

将该文件复制到您希望服务器提供该文件的位置。


4
太好了,谢谢。无法弄清楚该文件在目录结构的混乱位置是什么:)
Braun Shedd

4
是的,这不合逻辑。很多使用socket.io的人都这么问。最好的:-)
EhevuTov 2011年

4
谢啦!奇怪的是,在文档或样本中没有关于此的信息。
彼得

1
github.com/LearnBoost/Socket.IO/wiki/How-do-I-serve-the-client <脚本src =“ http:// <uri:port> /socket.io/socket.io.js”> < / script>
dVaffection 2013年

1
@dVaffection仅在Web应用程序和socket.io位于同一服务器和端口上时才有效。
戴维

171

我发现做到这一点的最好方法是使用bower

bower install socket.io-client --save

并在您应用的HTML中添加以下内容:

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

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


5
这是最好的解决方案,谢谢!如果这对其他人有帮助,则缩小的socket.io客户端位于bower_components/socket.io-client/dist/socket.io.min.js
mikermcneil 2014年

5
凉亭 <script src =“ bower_components / socket.io-client / socket.io.js”> </ script>
Connor Leech

未将运行“ bowerInstall:target”(bowerInstall)任务socket.io-client注入文件中。请在“ client / bower_components / socket.io-client”中查找所需的文件,然后手动将其包含在文件中。
2014年

这样可以很好地安装该库,但据我所知,它缺少bower.json。我大口的步骤,自动会连接凉亭库(“主凉亭-文件”)不拉进去。
戴夫Ceddia

我检查了bower info socket.io-client,看来它已注册为没有bower.json的bower(因此在bower存储库中创建了默认值)。您可以分叉项目,创建bower.json并注册自己的Bower版本。创建一个包含bower.json的拉取请求。创建一个问题,看看贡献者是否可以创建它。
Way)

25

我认为更好和适当的方法是从此url加载它

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

在运行socket.io的域上。此解决方案的积极之处在于,如果更新了socket.io npm模块,则客户端文件也会被更新,您不必每次都手动复制它。


1
这是IMO的最佳答案。推荐使用Socket.IO文档中的客户端include。它只是说明了它的来历以及@Capaj提到的优点。
Fernando Piancastelli

15
这是最好的解决方案,前提是Node.js为您希望建立连接的网站提供服务。那是一个很大的“ IF”。
戴维

8

我按照Matt Way的答案中的建议使用了Bower,效果很好,但随后库本身没有自己的库 bower.json文件。

这意味着bower-main-files我用来查找依赖项的JS文件的Gulp插件没有拉入socket.io,并且页面加载时出现错误。bower.json解决此问题的方法是在我的项目中添加替代项。

首先使用bower安装该库:

bower install socket.io-client --save

然后将替代项添加到项目的bower.json中:

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

6

对于运行wiredep并获取“ socket.io-client未被注入您的文件”的每个人。错误:

像这样修改您的wiredep任务:

wiredep: {
  ..
  main: {
    ..
    overrides: {
      'socket.io-client': {
        main: 'socket.io.js'
      }
    }
  }

@kd这样解决了,但是为什么呢?默认情况下,什么不会发生socket.io-client
Nitzankin 2014年

因为他们不想支持凉亭。
KD

2

如果您使用的是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>


0

如果您使用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>
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.