nodejs 的 express 和 socketio 之间的区别

Difference between express and socketio for nodejs

本文关键字:之间 区别 socketio express nodejs      更新时间:2023-09-26

我是nodejs编程的新手,并且正在为node开发各种js。我的问题是一个基本问题。有人可以解释一下快速和插座之间的区别吗?

据我所知,express是一个中间件,我们可以在中间件上使用Jade等模板引擎将数据推送到浏览器。那么插座是做什么的呢?它是传输层吗?理解其中的区别以及为什么我们需要在nodejs应用程序中使用express和socket对我来说是令人困惑的。

Express 是一个应用程序服务器。您可以定义路由并编写代码以生成应用程序的页面或 API 响应。它基本上是一个名为Sinatra的红宝石项目的端口。它适用于传统的请求/响应 HTTP 模型。

Socket.io 可以帮助您实现实时类型功能的服务器推送模型,例如警报/通知、聊天或您想要执行的任何更新,如果您希望它们只显示在浏览器中而不等待用户单击"刷新"按钮或类似的东西。

Express http 服务器提供从客户端到服务器的请求响应模型。

Socket.io 启用客户端和服务器之间的双向通信通道。

套接字io和express是完全不同的。但是新手会感到困惑,因为在大多数在线教程中,人们使用应用程序服务器作为快速和双向通信通道作为Socketio。他们将两个代码放在同一个服务器.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);
})

阅读此代码后,新的节点学习器很容易感到困惑。所以不需要把两者放在一起。例如,只需从上面的代码示例中删除快速代码,Socketio 服务器仍将完美运行。

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);
})

我不使用快递。我个人喜欢Apache作为我的应用程序服务器。因此,您可以单独使用任何应用程序服务器,它将处理您的静态请求并作为 Web 服务器工作。