Node.js/基本範例程式/共筆白板:修訂版本之間的差異

出自福留子孫
跳轉到: 導覽搜尋
第 3 行: 第 3 行:
 
<pre>
 
<pre>
 
var app = require('express')(); // 引入 Express 模組,並建立一個 Express 的 Web 應用程式物件。
 
var app = require('express')(); // 引入 Express 模組,並建立一個 Express 的 Web 應用程式物件。
var http = require('http').Server(app); //建立一個 HTTP 伺服器實例,並將 Express 應用程式實例作為參數傳入。
+
var http = require('http').Server(app); // 建立一個 HTTP 物件,並將上行物件作為傳入。
var io = require('socket.io')(http);            //引入 Socket.io 模組,並將 HTTP 伺服器實例作為參數傳入,建立一個 Socket.io 伺服器實例。
+
var io = require('socket.io')(http);            // 引入 Socket.io 模組,HTTP 物件作為參數傳遞給 socket.io,並將上行物件與http伺服器關聯起來。
  
const port = 8080;                              //定義網頁應用程式的埠號為 8080                     
+
const port = 8080;                              // 定義網頁應用程式的埠號為 8080                     
  
app.get('/', function(req, res){                //設定當使用者訪問根路徑時,回傳一個 HTML 文件(這裡是 Socket_test.html)。
+
app.get('/', function(req, res){                // 設定當使用者訪問根路徑時,回傳一個 HTML 文件(這裡是 Socket_test.html)。
 
   res.sendfile('Socket_test.html');
 
   res.sendfile('Socket_test.html');
 
});
 
});
  
io.on('connection', function(socket){          //監聽 Socket.io 的 connection 事件,當有使用者連接時,執行回調函式。
+
io.on('connection', function(socket){          // 監聽 Socket.io 的 connection 事件,當有使用者連接時,執行回調函式。
 
   console.log('a user connected');
 
   console.log('a user connected');
 
});
 
});
  
http.listen(port);                              //啟動 HTTP 伺服器,並監聽指定的埠號。
+
http.listen(port);                              // 啟動 HTTP 伺服器,並監聽指定的埠號。
  
 
io.sockets.on('connection', function(socket) {
 
io.sockets.on('connection', function(socket) {
 
                  
 
                  
 
         /* 登入初始化 */
 
         /* 登入初始化 */
         socket.on('login', function(data)      //監聽 'login' 事件,當有使用者登入時,執行回調函式。
+
         socket.on('login', function(data)      // 監聽 'login' 事件,當有使用者登入時,執行回調函式。
 
         {
 
         {
 
                 /* 伺服端訊息 */
 
                 /* 伺服端訊息 */
第 43 行: 第 43 行:
  
 
         /* 接受、發送訊息 */
 
         /* 接受、發送訊息 */
         socket.on('sendMessage', function(data){        //監聽 'sendMessage' 事件,當有使用者傳送訊息時,執行回調函式。
+
         socket.on('sendMessage', function(data){        // 監聽 'sendMessage' 事件,當有使用者傳送訊息時,執行回調函式。
 
                  
 
                  
 
                 /* 發送receiveMessage事件 */
 
                 /* 發送receiveMessage事件 */
第 51 行: 第 51 行:
 
          
 
          
 
         /* 接受畫布作業訊息 */
 
         /* 接受畫布作業訊息 */
         socket.on('draw', function(data){              //監聽 'draw' 事件,當有使用者在畫板上繪圖時,執行回調函式。
+
         socket.on('draw', function(data){              // 監聽 'draw' 事件,當有使用者在畫板上繪圖時,執行回調函式。
 
                  
 
                  
 
                 /* 將畫布作業訊息傳給其他線上的人 */
 
                 /* 將畫布作業訊息傳給其他線上的人 */
第 57 行: 第 57 行:
 
         });
 
         });
  
         socket.on('disconnect', function() {            //監聽斷開連接事件,當使用者離開時,執行回調函式。
+
         socket.on('disconnect', function() {            // 監聽斷開連接事件,當使用者離開時,執行回調函式。
 
                  
 
                  
 
                 /* 宣告物件,放置訊息 */
 
                 /* 宣告物件,放置訊息 */

2023年3月22日 (三) 13: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('/', function(req, res){                // 設定當使用者訪問根路徑時,回傳一個 HTML 文件(這裡是 Socket_test.html)。
  res.sendfile('Socket_test.html');
});

io.on('connection', function(socket){           // 監聽 Socket.io 的 connection 事件,當有使用者連接時,執行回調函式。
  console.log('a user connected');
});

http.listen(port);                              // 啟動 HTTP 伺服器,並監聽指定的埠號。

io.sockets.on('connection', function(socket) {
                
        /* 登入初始化 */
        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);
        });
});
  • 在 Node.js 中指令「var app = require('express')();」的意義是引入 Express 模組並立即調用它以創建一個 Express 應用。
    指令細部解析:
    1. require('express'):這個函數用於引入 Node.js 的模組,在這裡引入了 Express 模組。Express 是一個輕量級、靈活的 Node.js Web 應用框架,它提供了一系列功能來幫助開發者輕鬆地構建 Web 應用和 API。
    2. ():這個括號表示立即調用引入的 Express 函數。這將創建一個 Express 應用實例,可以用於配置路由、中間件和錯誤處理等。
    3. var app:將創建的 Express 應用實例賦值給變量 app。接下來,你可以使用 app 變量來設置應用的路由、監聽端口、添加中間件等操作。
綜上所述,這條指令的作用是將 Express 模組引入到 Node.js 應用程式中,並立即創建一個 Express 應用實例,以便在此基礎上構建 Web 應用和 API。
  • 在 Node.js 中指令「var http = require('http').Server(app);」的意義是引入 HTTP 模組,並使用 app(Express 應用實例)創建一個 HTTP 伺服器。
    指令細部解析:
    1. require('http'):這個函數用於引入 Node.js 的模組,這裡引入了 HTTP 模組。HTTP 模組允許你創建和操作 HTTP 伺服器和客戶端,用於構建 Web 應用和 API。
    2. Server(app):這個函數是 HTTP 模組的一個方法,用於創建一個新的 HTTP 伺服器實例。通過將 Express 應用實例(app 變量)作為參數傳遞給 Server() 函數,你將 HTTP 伺服器與 Express 應用綁定在一起。這樣,HTTP 伺服器將使用 Express 應用提供的路由和中間件來處理 HTTP 請求。
    3. var http:將創建的 HTTP 伺服器實例賦值給變量 http。接下來,你可以使用 http 變量來設置伺服器的監聽端口,以及與其他應用相關的操作,例如將 Socket.IO 與 HTTP 伺服器綁定等。
綜上所述,這條指令的作用是將 HTTP 模組引入到 Node.js 應用程式中,並使用 Express 應用實例創建一個 HTTP 伺服器,以便在此基礎上構建 Web 應用和 API。