我只是尝试使用' Socket.io' 对于初始设置,文档说明下面的代码
var app = require('express')();
var server = require('http').Server(app);
var io = require('socket.io')(server);
server.listen(80);
这是我的原始代码。
var app = require('express')();
app.listen(80);
两者之间的区别是什么? 特别是2个问题。
我查看了node.js和express.js的文档,但无法理解......
我非常感谢你的全面解释......
答案 0 :(得分:5)
您的原始代码正在使用Express为您创建HTTP服务器。您可以执行app.listen()的原因是因为它还返回服务器实例,因此它本质上是一种方便的方法:
app.listen = function() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
示例中的初始设置是:
的简写var http = require('http');
var server = http.createServer();
var express = require('express');
var app = express();
var socketio = require('socket.io');
server.on('request', app);
var io = socketio(server);
server.listen(80);
在此示例中,您将为Web套接字创建一个新的连接服务器,并自行将其集成到http服务器中。您将app
作为Server的参数传递的原因是,Express应用程序优先于典型http请求的套接字服务器。