2014-09-19 56 views
0

我很新的NodeJS并试图让Socket.IO运行一个Express应用程序。我试图尽可能靠近文档和教程,但最终,socket.io.js无法在客户端找到。Socket.io没有正确连接到http服务器在快速应用

服务器正在启动如下:

var app = require('../app'); 
app.set('port', process.env.PORT || 3000); 

var server = app.listen(app.get('port'), function() { debug('...') }); 

路由/服务网页:

var express = require('express'); 
var router = express.Router(); 

router.get('/', function (req, res) { 
    res.render('index', { title: 'Express' }); 
}); 

包括socket.io:

var express = require('express'); 
var http = require('http').Server(express); 
var io = require('socket.io')(http); 

而在HTML文件中,客户:

<script src="/socket.io/socket.io.js" type="text/javascript"> 

但是当加载页面时,这个JS文件永远找不到。我怀疑包括socket.io通过以前创建的http服务器是某种错误...或者我错过了别的东西?

更新

我刚刚发现服务器已启动(第一个片段)被执行之前,包括socket.io的文档片断。它们位于不同的文件中,并且服务器启动的一个(名为www.js)被配置为package.json中的“start”脚本,另一个(websockets.js)被该参数间接需要。

如果我把

var io = require('socket.io')(server); 

www.js末,一切都运行得很好。但有没有办法从websockets.js,这是之前加载,例如由服务器启动回调函数?

+0

查看其他在线教程相同。 – Ravi 2014-09-19 10:47:58

回答

0

尝试指定的完整路径,这样

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

而且从客户端连接到服务器:

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

还检查socket.io模块在node_modules目录中可用。

+0

是的,模块在那里,硬编码路径也不起作用。但我有一些新的发现,现在会更新这个问题。 – 2014-09-19 10:38:29