节点新手 – 要求的目的('快递')
在以下简单的socketIo服务器中,任何节点忍者都可以解释第一行的目的。 我没有使用快递实际上创build基于http的服务器,所以它会工作得很好,没有? 有点困惑…
var app = require('express')(); var server = require('http').Server(app); var io = require('socket.io')(server); server.listen(8080); app.get('/', function (req, res) { res.sendfile(__dirname + '/index.html'); }); io.on('connection', function (socket) { console.log('connection '+socket); socket.on("data",function(d){console.log('data from flash: ',d);}); socket.emit("message","hello from server"); socket.emit('news', { hello: 'world' }); socket.on('disconnect', function (data) { console.log(' disconnect'); }); });
该行:
var app = require('express')();
加载expression式模块(这就是require(...)
),然后调用它的构造函数来初始化它,然后将结果赋给一个名为app
的variables。 app
variables然后由您的代码在其他地方使用。
为了使用express
模块,这些步骤是必需的。
请注意您的代码是如何将app
(由Express创build的)传递到您的http服务器。 这个hook作为一个请求监听器被expression到你的http服务器中,以便它可以提供你正在使用的app.get(...)
路由特性。
如果你删除第一行,你的代码将不会工作。
你可以在不使用Express的情况下创build一个vanilla HTTP服务器,但是你必须编写你自己的requestListeners,并且不能使用Express的许多其他路由和中间件function。