【发布时间】:2014-09-19 18:46:23
【问题描述】:
我对 NodeJS 还是很陌生,并试图让 Socket.IO 与 Express 应用程序一起运行。我试图尽可能贴近文档和教程,但最后,在客户端找不到 socket.io.js。
服务器启动如下:
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 文件永远找不到。我怀疑通过先前创建的 http 服务器包含 socket.io 是错误的......还是我错过了其他东西?
更新
我刚刚发现包含socket.io的snipped是在服务器启动之前执行的(第一个sn-p)。它们位于不同的文件中,服务器启动一个(名为www.js)在package.json 中配置为“启动”脚本,而另一个(websockets.js)则间接需要。
如果我放了
var io = require('socket.io')(server);
在www.js 结尾处,一切正常。但是有没有办法从之前加载的websockets.js 做到这一点,例如通过服务器启动回调函数?
【问题讨论】:
-
查看其他在线教程。