node.js应用程序可以';找不到socket.io

node.js应用程序可以';找不到socket.io,node.js,socket.io,Node.js,Socket.io,我在app目录(以及express)中安装了socket.io,并在index.html文件中通过以下方式链接到它: <script src="http://localhost:8080/node_modules/socket.io/lib/socket.io.js"></script> 这是前端: <script src="/socket.io/socket.io.js"></script> <script src="js/vendor/

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

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

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

var socket=io.connect('http://localhost:8000');

另外,我将jQuery从google CDN切换到了local,它也没有找到它

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

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

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

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


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

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

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


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

方法是randunel提供的方法

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

如果直接链接该文件,则会收到“Welcome to socket.io”消息,而不是该文件。
还有一个CDN socket.io.js文件可供链接,但它已经过时,在新项目中无法正常工作,因此不推荐使用。

方法是randunel提供的方法

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

如果直接链接该文件,则会收到“Welcome to socket.io”消息,而不是该文件。
还有一个CDN socket.io.js文件可供链接,但它已经过时,在新项目中无法正常工作,因此不建议使用该文件。

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

正确的url是:

正如兰登内尔所说

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

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

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

正确的url是:

正如兰登内尔所说

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

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


如果找不到“没事”是什么意思?在那条路径上有文件吗?@tadman是的,文件在这里,但它给了我404…如果找不到它,你说的“没事”是什么意思?路径上有文件吗?@tadman是的,文件在这里,但它给我404…可能是哪个js文件的副本?服务器文件还是socket.io?它没有说明socket.io.js文件的位置。我切换到了端口80,因此所有内容都将如文档中所示,并且我仍然得到
gethttp://localhost/socket.io/socket.io.js 404(未找到)
哪个js文件?服务器文件还是socket.io?它没有说明socket.io.js文件的位置。我切换到了端口80,因此所有内容都将如文档中所示,并且我仍然得到
gethttp://localhost/socket.io/socket.io.js 404(未找到)
我更新了我的问题以显示服务器文件,这就是你的意思吗?我得到了一系列错误:
listen
method期望
http.Server
,然后
io没有定义
这是因为express 3.x我更新了答案。这个确切的代码对我有用;)。。试试卷曲http://localhost:8000/socket.io/socket.io.js您应该在控制台中看到``调试服务的静态内容/socket.io.js``您可以共享您的代码吗?警告消失,但
io
未定义
。。。我快发疯了。。thanx的帮助:)没有定义io,因为我不需要它,您可以通过更改
var io=require('socket.io')来定义io
我更新了我的问题以显示服务器文件,这就是你的意思吗?我得到了一系列错误:
listen
method期望
http.server
,然后
io没有定义
这是因为express 3.x我更新了答案。这个确切的代码对我有用;)。。试试卷曲http://localhost:8000/socket.io/socket.io.js您应该在控制台中看到``调试服务的静态内容/socket.io.js``您可以共享您的代码吗?警告消失,但
io
未定义
。。。我快发疯了。。thanx的帮助:)没有定义io,因为我不需要它,您可以通过更改
var io=require('socket.io')来定义io