我是nodejs编程的新手,正在学习为node开发的各种js。我的问题很基础,请问有人能解释一下express和socketio之间的区别吗?
据我所知,express是中间件,我们可以使用像jade这样的模版引擎将数据推送到浏览器上。那么socketio又是做什么的呢?它是传输层吗?对我来说,理解两者之间的区别以及为什么我们需要在nodejs应用程序中使用express和socket是令人困惑的。
我是nodejs编程的新手,正在学习为node开发的各种js。我的问题很基础,请问有人能解释一下express和socketio之间的区别吗?
据我所知,express是中间件,我们可以使用像jade这样的模版引擎将数据推送到浏览器上。那么socketio又是做什么的呢?它是传输层吗?对我来说,理解两者之间的区别以及为什么我们需要在nodejs应用程序中使用express和socket是令人困惑的。
Express是一种应用服务器。您可以定义路由并编写代码来生成应用程序的页面或API响应。它基本上是一个名为Sinatra的Ruby项目的移植。它适用于传统的请求/响应HTTP模型。
Socket.io可以帮助您实现服务器推送模型,用于实时类型功能,例如警报/通知、聊天或任何您想要进行的更新,如果您希望它们在浏览器中显示而无需等待用户单击“刷新”按钮或类似的操作。
Express HTTP服务器提供了客户端到服务器的请求响应模型。
Socket.io实现了客户端和服务器之间的双向通信通道。
Socket.io和Express是完全不同的。但是新手容易混淆,因为在大多数在线教程中,人们将应用程序服务器用作Express,双向通信通道用作Socket.io。他们将两个代码放在同一个server.js文件中。让我们看下面的例子(代码摘自著名的在线教程):
const express = require("express");
const app = express();
const port = 3000;
const http = require('http').createServer();
app.use(require('cors')());
const io = require("socket.io")(http, {
cors: {
origin: "*",
methods: ["GET", "POST"]
}
})
http.listen(port,()=>{
console.log("server is running on "+port);
})
const port = 3000;
const http = require('http').createServer();
const io = require("socket.io")(http, {
cors: {
origin: "*",
methods: ["GET", "POST"]
}
})
http.listen(port,()=>{
console.log("server is running on "+port);
})