2012-05-12 53 views
4

我试图在我的freebsd服务器上运行node.js应用程序,但我无法获取socket.io库以使用它。我试过,包括:Node.js socket.io.js未找到或io未定义

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

其中给出一个404错误,如果我直接链接到文件(即它是在我的public_html文件夹中)我得到的IO没有定义的错误。

在此先感谢

回答

10

尝试创建中有这样一行另一个Node.js应用程式,然后用节点运行它。 js

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

然后在您的浏览器访问http://127.0.0.1:8000,你应该得到友好的“欢迎来到socket.io。“问候。如果你得到这个,那么socket.io正在运行,并且将服务于socket.io.js文件。

我能想到的唯一可能发生的事情是,您可能无法链接到客户端文件中的备用端口。除非你运行的是在端口80上运行,现在创建一个具有socket.io设置脚本源

<script src="http://127.0.0.1:8000/socket.io/socket.io.js"> </script> 

客户端文件上明示的socket.io服务器这应该连接到插座。在端口8000上运行的io服务器并获取socket.io.js文件。

+0

谢谢,这没有发生,我会看到修复它。 –

+0

我很困惑。我遇到了同样的问题,而且确实有效,所以我绝对想在不运行单独的服务器的情况下修复它。 “我可以想到的唯一可能是你可能没有链接到你的客户端文件中的备用端口”你是什么意思,我在端口3200上使用express,有没有什么特别的我必须使用socket.io来为端口3200上的客户端js文件服务? –

3

你的Node.js应用程序仍必须服务于它 - 它不会自动地提供服务。你有什么服务器?它应该是类似于

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

或类似的(listen是重要的)。据我所知,该位置不是磁盘上的真实位置 - socket.io库应拦截URL并为其客户端库提供服务。

+0

我已经有这两行了,但是谢谢 –

0

添加了以下机身分析器之后:

, express.static(__dirname + "/public") 

因此,像:

var app = module.exports = express.createServer(
    express.bodyParser() 
    , express.static(__dirname + "/public") 
);