最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - socket.io.js not loading - Stack Overflow

programmeradmin4浏览0评论

I know there are a bunch of questions on this already, but none have answered it for me, and plus mine is slightly different.

I'm starting the socket.io server in node using this:

var io = require('socket.io').listen(8000);

My terminal says everything is ok:

info  - socket.io started

Now I am trying to load the .js file in my clientside browser using this url:

http://<hostname>:8000/socket.io/socket.io.js

I dont get a 404, it just hangs forever. I've also used a network utility to ping port 8000, and it seems to be open fine.

I installed node and socket.io just yesterday, so they should be the latest versions. Can anyone shed any light on this? Thanks!

I know there are a bunch of questions on this already, but none have answered it for me, and plus mine is slightly different.

I'm starting the socket.io server in node using this:

var io = require('socket.io').listen(8000);

My terminal says everything is ok:

info  - socket.io started

Now I am trying to load the .js file in my clientside browser using this url:

http://<hostname>:8000/socket.io/socket.io.js

I dont get a 404, it just hangs forever. I've also used a network utility to ping port 8000, and it seems to be open fine.

I installed node and socket.io just yesterday, so they should be the latest versions. Can anyone shed any light on this? Thanks!

Share Improve this question asked Mar 1, 2013 at 15:17 RichRich 5151 gold badge5 silver badges18 bronze badges 3
  • Have you created the http server? – Puigcerber Commented Mar 1, 2013 at 15:32
  • Thats my line of thought, but the socket.io "how to use" says this: // note, io.listen(<port>) will create a http server for you var io = require('socket.io').listen(80); – Rich Commented Mar 1, 2013 at 15:36
  • 1 I see that line. For what I understand, if you load socket.io without the http server, you can be listening for events in that port, but not serving the js file itself. But I'm not sure if I'm right though. – Puigcerber Commented Mar 1, 2013 at 15:44
Add a ment  | 

4 Answers 4

Reset to default 2

Turns out the reason I could never request the .js file was because my pany network blocks all ports except the usual ones (80, 21, etc), so `I would never be able to municate with port 8000.

Use express.js. Place the socket.io file in public/javascripts folder and add this line to your html

<script src="/javascripts/socket.io.js"></script>

I think this is the best way. When you're writing http://<hostname>:8000/socket.io/socket.io.js
node tries to find a folder named socket.io in your project's public folder. And the file socket.io.js in it.

If you don't want to use express.js you should catch the request and try to load a file if no routes were found for your request (what actually express does) because node doesn't know what to do for requests which don't match any routes in your server.

And I remend to use the socket.io.min.js file (it's smaller and it's in folder node_modules\socket.io\node_modules\socket.io-client\dist)

You have to start an http/https server to access it via http/https. Simply starting an socket.io server won't do. Do the following:

var http = require('http');
var  app = http.createServer(),
io = require('socket.io').listen(app);
app.listen(7000, "0.0.0.0");

Then I can access the file http://localhost:7000/socket.io/socket.io.js

sockets.io uses websocket protocol (ws://). See the wikipedia page.

You need to get at least 3 pieces working together.

  1. Serve some HTML (/index.html will do just fine) so there's a web page. This file should contain the socket.io client <script> tag. For this you need the http server portion of the starter examples. You are missing this and that's why browsing to your server just hangs.

  2. Serve the socket.io client. Socket.io will do this for you automatically when you pass in your http server function to it. You don't need full express as this can be done with just node's http module as per the first example on the socket.io docs.

  3. Some javascript to actually do something with the socket. This can be the content of a <script> tag in index.html or a separate file. If it's a separate file, you need to set up your http server to actually serve it.

发布评论

评论列表(0)

  1. 暂无评论