node.js app无法找到socket.io

ily*_*lyo 1 node.js socket.io

我在app目录中安装了socket.io(以及express),并在index.html文件中以这种方式链接到它:

<script src="http://localhost:8080/node_modules/socket.io/lib/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)

我在这个请求上得到了404.我仔细检查了链接,没关系.node.js应用程序在端口8080上运行,我不知道为什么它不起作用

更新:显然它是Express的东西.什么时候不使用它我没有那个问题,socket.io工作正常.这是他设置我的服务器文件:

var express = require('express'),
    http = require('http');

var app = express();
var server = http.createServer(app);
var io = require('socket.io').listen(server);

app.listen(8000);
Run Code Online (Sandbox Code Playgroud)

这是前端:

<script src="/socket.io/socket.io.js"></script>
<script src="js/vendor/jquery-1.8.3.min.js"></script>
<script>
  var socket = io.connect('http://localhost:8000');
Run Code Online (Sandbox Code Playgroud)

此外,我将jQuery从谷歌CDN切换到本地,它也没有找到它

dri*_*hev 7

确保您已经socket.io在后端监听外部连接.基本上socket.io有提供socket.io.js文件的内部方法,所以你应该require ('socket.io').listen(app)在定义任何路由到你的应用之前放置你.

正确的网址是:

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

正如兰杜内尔所说.

因此,您的配置应如下所示:

更新快递3.x:

var express = require('express'),
    http = require('http');

var app = express();
var server = http.createServer(app).listen(8000);

require('socket.io').listen(server);  // Your app passed to socket.io
Run Code Online (Sandbox Code Playgroud)

服务器端

<script src="http://localhost:8000/socket.io/socket.io.js"></script>
Run Code Online (Sandbox Code Playgroud)