使用nodejs分別搭建一個伺服器和用戶端,類比問答精靈

來源:互聯網
上載者:User

標籤:精靈   響應   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分別搭建一個伺服器和用戶端,類比問答精靈

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.