1

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

<script src="http://localhost:8080/node_modules/socket.io/lib/socket.io.js"></script>

我收到此请求的 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);

这是前端:

<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');

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

4

4 回答 4

7

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

正确的网址是:

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

正如兰杜内尔所说。

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

为 express 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

服务器端

<script src="http://localhost:8000/socket.io/socket.io.js"></script>
于 2013-01-09T09:16:12.560 回答
3

不要使用整个路径,它与您项目的目录结构不对应。只需使用

<script src="http://localhost:8080/socket.io/socket.io.js"></script>

顺便说一句,确保 socket.io 也在监听 8080,而不仅仅是项目中的其他服务。

于 2013-01-08T16:47:58.197 回答
0

尝试将您的 JS 文件放入http://localhost:8080/javascripts/socket.io.js,基本上是您public文件夹的 JavaScript 目录。

于 2013-01-08T16:47:37.863 回答
0

路是从兰杜内尔来的。

<script src="http://localhost:8080/socket.io/socket.io.js"></script>

如果你直接链接文件,你会得到一个“Welcome to socket.io”消息而不是文件。还有一个 CDN socket.io.js 文件可用于链接,但它已经过时并且不能在新项目上正常工作,因此不推荐。

于 2013-01-09T00:35:35.113 回答