標籤:精靈 響應 lis cas 執行 包含 ejs div 最優
嘻嘻。最近在玩nodejs,在我的學習以及理解中nodejs的執行環境主要是分為三個部分的,首先會有一個global的全域對象,然後在這個全域對象中又包含有一個核心模組和檔案模組(可以理解為是使用者自己寫的檔案)的。
並且nodejs具有兩個特點的,那就是1、是一個非阻塞的I/O模型,也就是說nodejs的操作是非同步。2、是基於事件驅動的程式設計思想的。
今天主要是通過自己搭建伺服器和用戶端,讓兩者之間進行通訊,類比出類似問答精靈的一個效果的。在這之前,我們是很有必要瞭解一下伺服器與瀏覽器之間是怎樣進行互動的,其實在伺服器端和瀏覽器端都各自具有一個叫做socket的東西,它就是負責接收以及發送資訊的。也就是說瀏覽器端會通過socket來發送請求,而伺服器端也會通過自己的一個socket向瀏覽器端作出響應處理。
在這個小案例中我們主要用到的一個nodejs的核心模組是“net核心模組”,通過這個模組的方法我們可以建立伺服器以及建立伺服器與用戶端的串連等功能的。
好了,還是直接上代碼吧。
伺服器端的代碼(server.js):
1 //首先使用strict 模式來規範檔案 2 "use strict"; 3 //引入net核心模組 4 const net = require("net"); 5 //建立伺服器socket對象 6 let socketServer = net.createServer(); 7 8 //開啟伺服器 9 socketServer.on("connection",(socket)=>{10 console.log("有客戶串連上來了"); //作為測試是否有客戶串連11 //當建立串連後就輸出下面的文本12 socket.write("主人,小丫隨時恭候,為您提供最優質的服務!");13 14 //當用戶端有資料發送過來,觸發下面的事件15 socket.on("data",(content)=>{16 //處理使用者發送來的資訊17 var msg = content.toString().trim();18 //判斷使用者輸入的內容19 if(msg != ""){20 switch(msg){21 case "你好!":22 socket.write("主人,你好!有什麼能夠協助到您的嗎?");23 break;24 case "早上好!":25 socket.write("good morning!");26 break;27 case "你好笨哎!":28 socket.write("主人,我允許你說我笨,但是你不可以侮辱我的智商。");29 break;30 case "你傻不傻呀?":31 socket.write("主人說我傻我就傻。但是,主人,你忍心說我傻嗎?");32 break;33 case "早餐要吃什麼呢?":34 socket.write("主人,你喜歡喲!不過記得要吃有營養的早餐呀!");35 break;36 case "午餐吃什麼呢?":37 socket.write("主人,你可以選擇吃飯的喲。");38 break;39 case "晚餐吃什麼呢?":40 socket.write("主人,你好煩哎!");41 break;42 default:43 socket.write("不知道你在說什麼");44 break;45 } 46 }47 });48 //處理異常49 socket.on("error",()=>{50 console.log("客戶掉線");51 });52 });53 54 //進行監聽55 socketServer.listen(8088,‘127.0.0.1‘,()=>{56 console.log("伺服器已經開始");57 })
下面的是用戶端的代碼(client.js):
1 "use strict"; 2 const net = require("net"); 3 4 //得到ip和連接埠 5 const ip = "127.0.0.1"; 6 const port = 8088; 7 //建立串連 8 var socket = net.createConnection(port,ip,()=>{ 9 //console.log("已串連上伺服器");10 });11 //監聽伺服器的資料12 socket.on("data",(content)=>{13 console.log(`小丫:${content}`);14 });15 16 //在用戶端添加一個輸入事件17 process.stdin.on("readable",()=>{18 var msg = process.stdin.read();19 if(msg !=null){20 //將輸入的資訊發送到伺服器21 socket.write(msg);22 }23 })
當在powershell中分別運行伺服器和用戶端的時候,就可以實作類別似問答精靈的效果了。
注意:要先開啟伺服器,然後再開啟用戶端才能正常啟動並執行窩。
效果如下面的圖片展示:
使用nodejs分別搭建一個伺服器和用戶端,類比問答精靈