簡體   English   中英

nodejs的express和socketio的區別

[英]Difference between express and socketio for nodejs

我是 nodejs 編程的新手,正在瀏覽為 node.js 開發的各種 js。 我的問題是一個基本問題。 有人可以解釋一下express和socketio之間的區別嗎?

據我所知,express 是一個中間件,我們可以在上面使用 jade 等模板引擎將數據推送到瀏覽器。 那么socketio做什么呢? 它是傳輸層嗎? 理解差異以及為什么我們需要在 nodejs 應用程序中使用 express 和 socket 令我感到困惑。

Express 是一個應用服務器。 您定義路由並編寫代碼來生成應用程序的頁面或 API 響應。 它基本上是一個名為 Sinatra 的 ruby​​ 項目的端口。 它適用於傳統的請求/響應 HTTP 模型。

Socket.io 可幫助您實現實時類型功能的服務器推送模型,例如警報/通知、聊天或任何您想做的更新,如果您希望它們只顯示在瀏覽器中而無需等待用戶單擊“刷新”按鈕或類似的按鈕。

Express http 服務器提供從客戶端到服務器的請求響應模型。

Socket.io 啟用客戶端和服務器之間的雙向通信通道。

socket io和express是完全不同的。 但是新手會感到困惑,因為在大多數在線教程中,人們使用應用服務器作為像 Socketio 這樣的快速雙向通信通道。 他們將兩個代碼放在同一個 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);
})

閱讀此代碼后,新的節點學習者很容易感到困惑。 所以不需要把兩者放在一起。 例如,只需從上面的代碼示例中刪除 express 代碼,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 服務器工作。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM