Where is the socket.io client library?

As far as I have seen, there is no explanation as to where we are to locate the client side script for socket.io if node.js is not used as the web server. I've found a whole directory of client side files, but I need them in a combined version (like it's served when using node.js webs servers). Any ideas?


Solution 1:

The best way I have found to do this is to use bower.

bower install socket.io-client --save

and include the following in your app's HTML:

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

That way you can treat the socket.io part of your client the same way you treat any other managed package.

Solution 2:

socket.io.js is what you're going to put into your client-side html. Something like:

<script type="text/javascript" src="socket.io.js"></script>

my script is located:

/usr/local/lib/node_modules/socket.io/node_modules/socket.io-client/dist/socket.io.js

copy that file to where you want your server to serve it.

Solution 3:

I think that better and proper way is to load it from this url

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

on the domain where socket.io runs. What is positive on this solution is that if you update your socket.io npm module, your client file gets updated too and you don't have to copy it every time manually.

Solution 4:

I used bower as suggested in Matt Way's answer, and that worked great, but then the library itself didn't have its own bower.json file.

This meant that the bower-main-files Gulp plugin that I'm using to find my dependencies' JS files did not pull in socket.io, and I was getting an error on page load. Adding an override to my project's bower.json worked around the issue.

First install the library with bower:

bower install socket.io-client --save

Then add the override to your project's bower.json:

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