【问题标题】:Where is the socket.io client library?socket.io 客户端库在哪里?
【发布时间】:2012-01-21 15:44:41
【问题描述】:

据我所知,如果 node.js 不用作 Web 服务器,我们将在何处定位 socket.io 的客户端脚本没有任何解释。我找到了客户端文件的整个目录,但我需要它们的组合版本(就像使用 node.js 网络服务器时提供的那样)。有什么想法吗?

【问题讨论】:

    标签: node.js client socket.io


    【解决方案1】:

    我发现最好的方法是使用bower

    bower install socket.io-client --save
    

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

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

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

    【讨论】:

    • 这是最好的解决方案,谢谢!如果这对其他人有帮助,缩小的 socket.io 客户端位于 bower_components/socket.io-client/dist/socket.io.min.js
    • 凉亭ftw。
    • 运行“bowerInstall:target”(bowerInstall) 任务 socket.io-client 未注入您的文件中。请在“client/bower_components/socket.io-client”中查看您需要的文件,然后手动将其包含在您的文件中。
    • 这很好地安装了库,但据我所知,它缺少 bower.json。我自动连接凉亭库('main-bower-files')的 gulp 步骤没有将其拉入。
    • 我检查了bower info socket.io-client,它看起来像是在没有 bower.json 的情况下注册到 bower(因此在 bower repo 中创建了一个默认值)。你可以 fork 项目,创建一个 bower.json,然后注册你自己的 bower 版本。创建一个包含 bower.json 的拉取请求。创建一个问题,看看贡献者是否可以创建它。
    【解决方案2】:

    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
    

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

    【讨论】:

    • 太棒了,谢谢。无法弄清楚该文件在那乱七八糟的目录结构中的位置:)
    • 是的,这不合逻辑。很多使用 socket.io 的人都会问这个问题。一切顺利:-)
    • 谢谢你!奇怪的是文档或示例中没有相关信息。
    • @dVaffection 这仅在 web 应用程序和 socket.io 位于同一服务器和端口上时才有效。
    【解决方案3】:

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

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

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

    【讨论】:

    • 这是 IMO 的最佳答案。这是 Socket.IO 文档中客户端包含的推荐用法。它只是解释了它的来源,以及@Capaj 提到的优势。
    • 这只是最好的解决方案,如果 Node.js 为您希望发生连接的网站提供服务。这是一个非常大的“如果”。
    【解决方案4】:

    我按照 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"]
      }
    }
    

    【讨论】:

      【解决方案5】:

      对于所有运行wiredep 并获得“socket.io-client 未注入您的文件”的人。错误:

      像这样修改你的wiredep任务:

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

      【讨论】:

      • @k-d 这解决了它,但这是为什么呢? socket.io-client 默认情况下不会发生什么?
      • 因为他们不想支持凉亭。
      【解决方案6】:

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

      【讨论】:

        【解决方案7】:

        我创建了一个兼容凉亭的 socket.io-client,可以像这样安装:

        bower install sio-client --save
        

        或用于开发用途:

        bower install sio-client --save-dev
        

        链接到repo

        【讨论】:

        • 你们会发布任何更新吗? socketio 现在是 1.3.5。由于某种原因,您的速度非常缓慢且笨拙。
        • 也许有办法自动更新 Bower 客户端版本?
        【解决方案8】:

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

        【讨论】:

          猜你喜欢
          • 2015-12-06
          • 2011-10-08
          • 2018-01-09
          • 1970-01-01
          • 2010-11-26
          • 2016-04-23
          • 1970-01-01
          • 1970-01-01
          • 2013-02-10
          相关资源
          最近更新 更多