我正在尝试按照本教程使用socket.io创建一个简单的聊天应用程序。我在教程的一部分,我必须将下面的所有代码插入到js文件中并启动它。我只是不明白为什么第二个代码存在,我听说express可以做比http更多的事情。而不是使用“http.listen”代码,不能使用“app.listen”而不是“app”传递给“io”?
var app = require('express')();
var http = require('http').Server(app);
var io = require('socket.io')(http);
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
io.on('connection', function(socket){
console.log('a user connected');
});
http.listen(3000, function(){
console.log('listening on *:3000');
});
答案 0 :(得分:0)
你是对的。 Express是一个位于nodejs应用程序之上的框架,它提供了一个更容易,提供更多中间件来处理路由,会话和cookie以及更有效的方式来创建服务器
Sub Opgave3()
Dim n As Long
n = WorksheetFunction.CountIf(Columns(9), "1")
If n = 1 Then _
MsgBox "All in Fakultet:" & n & "123", vbInformation, "Heres the answer"
End Sub
在此示例中,为了在不同通道之间创建套接字,您必须使用HTTP来指示套接字用于处理HTTP请求/响应。你根本无法将整个快递申请传递给io。
答案 1 :(得分:0)
为什么我已经快递时需要添加“require(”http“)”
您不必自己手动加载http模块。您使用express为您创建一个http服务器(它将为您加载http模块)并将其与socket.io集成,而无需像这样手动加载htttp模块:
const app = require('express')();
app.get('/', function(req, res){
res.sendFile(__dirname + '/index.html');
});
const server = app.listen(3000, function(){
console.log('listening on *:3000');
});
const io = require('socket.io')(server);
io.on('connection', function(socket){
console.log('a user connected');
});
在内部,app.listen()
为您加载http模块,创建一个服务器然后启动它,返回server
对象,然后可以将其与socket.io一起使用。
在express中,这是app.listen()
:
const http = require('http');
app.listen = function listen() {
var server = http.createServer(this);
return server.listen.apply(server, arguments);
};
所以,有人必须加载http
模块。如果您使用app.listen()
,快递将为您完成。