Node.js/基本範例程式/共筆白板:修訂版本之間的差異
出自福留子孫
第 6 行: | 第 6 行: | ||
var io = require('socket.io')(http); // 引入 Socket.io 模組,HTTP 物件作為參數傳遞給 socket.io,並將上行物件與http伺服器關聯起來。 | var io = require('socket.io')(http); // 引入 Socket.io 模組,HTTP 物件作為參數傳遞給 socket.io,並將上行物件與http伺服器關聯起來。 | ||
const port = 8080; // 定義網頁應用程式的埠號為 8080 | const port = 8080; // 定義網頁應用程式的埠號為 8080 | ||
− | app.get( // 當遠端使用者訪問根路徑時,傳回 Socket_test.html | + | app.get( // 當遠端使用者訪問根路徑時,傳回 Socket_test.html 的 respond。 |
'/', | '/', | ||
function(req,res){res.sendfile('Socket_test.html');} | function(req,res){res.sendfile('Socket_test.html');} |
2023年3月22日 (三) 17:03的修訂版本
var app = require('express')(); // 載入 express 模組,並建立一個 express 的 Web 應用程式物件。 var http = require('http').Server(app); // 建立一個 HTTP 物件,並傳入上行物件。 var io = require('socket.io')(http); // 引入 Socket.io 模組,HTTP 物件作為參數傳遞給 socket.io,並將上行物件與http伺服器關聯起來。 const port = 8080; // 定義網頁應用程式的埠號為 8080 app.get( // 當遠端使用者訪問根路徑時,傳回 Socket_test.html 的 respond。 '/', function(req,res){res.sendfile('Socket_test.html');} ); io.on( // 監聽 Socket.io 物件的 connection 事件,當有使用者連接時,執行函式。 'connection', function(socket){console.log('a user connected');} ); http.listen(port); // 啟動 HTTP 伺服器,並監聽指定的埠號。 /* 應付多個前端 io */ io.sockets.on('connection',function(socket) // socket 是某一前端的 io 物件 { socket.on('login',function(data) // 監聽 'login' 事件,當有使用者登入時,執行函式。 { /* 伺服端訊息 */ console.log("connected"); /* 宣告物件,放置訊息 */ var obj = new Object; obj.name = data.name; obj.msg = data.name + ' 已上線'; console.log(obj.msg); /* 將在前端輸入的名稱記錄下來 */ socket.name = data.name; /* 將自己上線訊息傳給自己的網頁 */ io.emit('msg',obj); /* 告訴其他人你上線了 */ socket.broadcast.emit('msg', obj); }); /* 接受、發送訊息 */ socket.on('sendMessage', function(data) // 監聽 'sendMessage' 事件,當有使用者傳送訊息時,執行函式。 { /* 發送receiveMessage事件 */ data.message = socket.name +" 說: "+ data.message; io.sockets.emit('receiveMessage', data); }); /* 接受畫布作業訊息 */ socket.on('draw',function(data) // 監聽 'draw' 事件,當有使用者在畫板上繪圖時,執行函式。 { /* 將畫布作業訊息傳給其他線上的人 */ socket.broadcast.emit('show', data); }); /* 離開 */ socket.on('disconnect',function() // 監聽斷開連接事件,當使用者離開時,執行函式。 { /* 宣告物件,放置訊息 */ var obj = new Object; obj.msg = socket.name + ' 已離開'; console.log(obj.msg); /* 通知所有人自己已經離開 */ io.sockets.emit('msg', obj); }); });
方法列表:
- app
- app.get(路徑,函式)
- 第一個參數是路徑,可以是一個字串或正則表達式,用來匹配客戶端請求的URL路徑。例如,/home、/about、/contact等。
- 第二個參數是回呼函式(callback function),當客戶端請求匹配到路徑時,該函式就會被執行。
回呼函式有兩個參數:一個是客戶端請求的request物件,另一個是伺服器回應的response物件。
在回呼函式中,我們可以使用各種技術處理request物件。例如讀取query string、POST資料、cookies等,然後使用response物件回應一些東西給客戶端。
- app.get(路徑,函式)
- io
- io物件.on('connection',函式)
- io物件.on('disconnect',函式)
- io物件.on('login',函式)
- io物件.on('sendMessage',函式)
- io物件.emit('msg',obj);
- io物件.broadcast.emit('msg',obj)
- io物件.broadcast.emit('show',data);
- io.sockets.on('connection',函式)
- io.sockets.emit('receiveMessage',data)
- http
- http.listen(port,ip,函式)
GPT-4:
- 在 Node.js 中指令「var app = require('express')();」的意義是引入 Express 模組並立即調用它以創建一個 Express 應用。
指令細部解析:- require('express'):這個函數用於引入 Node.js 的模組,在這裡引入了 Express 模組。Express 是一個輕量級、靈活的 Node.js Web 應用框架,它提供了一系列功能來幫助開發者輕鬆地構建 Web 應用和 API。
- ():這個括號表示立即調用引入的 Express 函數。這將創建一個 Express 應用實例,可以用於配置路由、中間件和錯誤處理等。
- var app:將創建的 Express 應用實例賦值給變量 app。接下來,你可以使用 app 變量來設置應用的路由、監聽端口、添加中間件等操作。
- 綜上所述,這條指令的作用是將 Express 模組引入到 Node.js 應用程式中,並立即創建一個 Express 應用實例,以便在此基礎上構建 Web 應用和 API。
- 在 Node.js 中指令「var http = require('http').Server(app);」的意義是引入 HTTP 模組,並使用 app(Express 應用實例)創建一個 HTTP 伺服器。
指令細部解析:- require('http'):這個函數用於引入 Node.js 的模組,這裡引入了 HTTP 模組。HTTP 模組允許你創建和操作 HTTP 伺服器和客戶端,用於構建 Web 應用和 API。
- Server(app):這個函數是 HTTP 模組的一個方法,用於創建一個新的 HTTP 伺服器實例。通過將 Express 應用實例(app 變量)作為參數傳遞給 Server() 函數,你將 HTTP 伺服器與 Express 應用綁定在一起。這樣,HTTP 伺服器將使用 Express 應用提供的路由和中間件來處理 HTTP 請求。
- var http:將創建的 HTTP 伺服器實例賦值給變量 http。接下來,你可以使用 http 變量來設置伺服器的監聽端口,以及與其他應用相關的操作,例如將 Socket.IO 與 HTTP 伺服器綁定等。
- 綜上所述,這條指令的作用是將 HTTP 模組引入到 Node.js 應用程式中,並使用 Express 應用實例創建一個 HTTP 伺服器,以便在此基礎上構建 Web 應用和 API。