中文字幕第五页-中文字幕第页-中文字幕韩国-中文字幕最新-国产尤物二区三区在线观看-国产尤物福利视频一区二区

NodeJS實(shí)現(xiàn)一個(gè)聊天室功能

看效果

為臺(tái)州等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及臺(tái)州網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為成都網(wǎng)站設(shè)計(jì)、成都做網(wǎng)站、臺(tái)州網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!

一直說(shuō)我喜歡賣(mài)關(guān)子,這次直接看效果:

NodeJS實(shí)現(xiàn)一個(gè)聊天室功能

聊天界面(喜歡的可以自己畫(huà)一個(gè)比較逼真的頁(yè)面)

NodeJS實(shí)現(xiàn)一個(gè)聊天室功能

前文

先說(shuō)一下為什么寫(xiě)這個(gè)東西,最近不是在寫(xiě)NodeJS知識(shí)點(diǎn)的梳理嘛,但是我發(fā)現(xiàn)梳理的過(guò)程著實(shí)無(wú)聊的要死,雖然已經(jīng)快梳理一半了,只是還沒(méi)發(fā)布,這個(gè)不重要,重要的是不做點(diǎn)什么東西確實(shí)無(wú)聊,所以今天把我做這個(gè)的過(guò)程記錄給你們看一下,喜歡的可以拿去玩玩。實(shí)現(xiàn)的功能是可以聊天,可以顯示用戶自定義的昵稱,并且顯示發(fā)送時(shí)間

PS:這個(gè)功能如果我們使用webstorm新建一個(gè)express app的項(xiàng)目的話,是可以省很多代碼的,但是這里我們選擇原生實(shí)現(xiàn)它,原因是我們寫(xiě)代碼不可能一直依賴于別人搭建好的框架或者輪子,雖然我們提倡不重復(fù)造輪子,但是如果每一個(gè)程序員都這樣想的話,這個(gè)行業(yè)面臨的將是一個(gè)輪子都沒(méi)有。

客戶端代碼

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>http_demo</title>
  <script src="/socket.io/socket.io.js"></script>
</head>
<body>
  <h2>
    WelCome to CSDN of clearlove
  </h2>
  <p>
    If you like my article, you can follow my blog
  </p>
  <p>公屏聊天</p>
  <div id="infos">
  </div>
  <input style="margin-top: 5vh;
  width: 100px;
  height: 40px;
  border: 1px solid #ffffff;
  border-radius: 4px;
  color: #000000;
  padding-left: 10px" type="text" id="nick" value="" placeholder="昵稱" />
  <input type="text" id="send_info" value="" placeholder="請(qǐng)輸入您想說(shuō)的話" />
  <button type="button" id="btn">發(fā)送</button>
</body>
<script>
  //創(chuàng)建一個(gè)io對(duì)象
  var socket = io();
  //用戶點(diǎn)擊發(fā)送的時(shí)候直接將昵稱和信息內(nèi)容發(fā)送過(guò)去,如果沒(méi)有昵稱,顯示匿名,判斷是不是有值
  document.getElementById("btn").onclick = function () {
    if(document.getElementById("send_info").value){
      socket.emit("link_to_server", document.getElementById("send_info").value, document.getElementById("nick").value ? document.getElementById("nick").value : '匿名')
    }else{
      alert(`發(fā)送內(nèi)容不可以為空`)
    }
  }
  // 收到的信息展示出來(lái),新建一個(gè)元素,append到div中
  socket.on('link_to_client', function (msg) {
    var h7 = document.createElement('h7');
    h7.innerText = `${msg}`;
    document.getElementById('infos').append(h7)
  })
</script>
<style>
  body {
    background: #307ac6;
    text-align: center;
    color: aliceblue;
    margin: 0% 10%
  }
  p {
    font-size: 2rem
  }
  input {
    margin-top: 5vh;
    width: 200px;
    height: 40px;
    border: 1px solid #ffffff;
    border-radius: 4px;
    color: #000000;
    padding-left: 10px;
  }
  button {
    border: none;
    background: #ffffff;
    border-radius: 4px;
    width: 90px;
    height: 42px;
    color: #000000;
  }
  #infos {
    margin-left: 25vw;
    width: 400px;
    height: 500px;
    overflow: scroll;
    border: none;
    background: #ffffff;
    color: #000000;
  }
</style>
</html>

服務(wù)端代碼

/**
 * @author clearlove
 * @aim 測(cè)試連接一個(gè)socket.io通信 廣播
 */
//引入fs
var fs = require('fs')
//引入http 
var http = require('http')
var date = new Date()
/**
 * @FormDate 格式化時(shí)間
 * @param {*} date 當(dāng)前時(shí)間
 */
function FormDate(date) {
  return `${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()} ${date.getHours()}:${date.getMinutes()}`
}
/**
 * 搭建一個(gè)服務(wù)器
 */
var server = http.createServer(function (res, res) {
  if (res.url !== '/favicon.ico') {
    res.writeHead(200, { "Content-type": "text/html" })
    const myreadstream = fs.createReadStream(__dirname + '/views/http_demo.html', 'utf-8')
    myreadstream.pipe(res)
  }
})
//引入socket.io 這里是兩步,第一步是io = require('socket.io') 第二步是一個(gè)新的變量.server 合成一步就是下面的代碼
var io = require('socket.io')(server);
io.on("connection", function (socket) {
  //這里獲取到對(duì)方的ip地址,可以展示,也可以不展示,也可以進(jìn)行ip的過(guò)濾
  var clientIp = socket.request.connection.remoteAddress
  console.info("一個(gè)socket連接成功了")
  socket.on("link_to_server", function (msg, nick) {
    //這里使用io發(fā)送 
    io.emit('link_to_client', `${nick} : ${msg} ${FormDate(date)}`)
  })
})
server.listen(5000, '0.0.0.0');
console.info("server is running...")

服務(wù)跑起來(lái)

隱藏一下ip吧,為了安全

NodeJS實(shí)現(xiàn)一個(gè)聊天室功能

當(dāng)然上面我用的一些可能比較‘原生',直接創(chuàng)建元素什么的,我是因?yàn)闆](méi)有引入類似jquery這樣的框架進(jìn)來(lái),引入的話就比較簡(jiǎn)單的,但是不影響我們實(shí)現(xiàn)這個(gè)基礎(chǔ)的聊天功能,上面可能有一些你們不明白的地方或者是你們都明白,包括為什么上面啟動(dòng)的時(shí)候不是node+文件名字而是nodemon+文件名,有什么區(qū)別,有什么好處,都沒(méi)關(guān)系,后面的文章我都會(huì)介紹上面用到的所有的知識(shí)點(diǎn),具體怎么使用的,怎么出來(lái)的, 為什么這么寫(xiě),怎么一步一步實(shí)現(xiàn)目前的這個(gè)效果,后面的文章我都會(huì)更新,為什么這個(gè)時(shí)候?qū)戇@個(gè)呢?原因是我想讓更多的人知道NodeJS本身是一個(gè)很好玩的語(yǔ)言,可以做的事情很多。如果你們看了我的文章以后喜歡上了NodeJS我的目的就達(dá)到了,畢竟我還是覺(jué)得NodeJS是一個(gè)非常強(qiáng)大的語(yǔ)言,我希望更多的人使用它。

如果有人覺(jué)得不想看那么多就想玩玩這個(gè)效果的,也可以,直接安裝node、然后本地初始化一個(gè)package.json,然后安裝nodemon、socket.io就可以了,具體怎么安裝,emmmmm

安裝node

下載node

下一步下一步就好了

初始化package.js

npm init

輸入名字 版本號(hào)之后 一直回車(chē)就好了

安裝nodemon

npm install -g nodemon --save-dev

安裝socket.io

npm install socket.io --save-dev

總結(jié)

以上所述是小編給大家介紹的NodeJS實(shí)現(xiàn)一個(gè)聊天室功能,點(diǎn)擊跳轉(zhuǎn)按鈕實(shí)現(xiàn)跳轉(zhuǎn),希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)創(chuàng)新互聯(lián)網(wǎng)站的支持!
如果你覺(jué)得本文對(duì)你有幫助,歡迎轉(zhuǎn)載,煩請(qǐng)注明出處,謝謝!

當(dāng)前名稱:NodeJS實(shí)現(xiàn)一個(gè)聊天室功能
當(dāng)前地址:http://www.2m8n56k.cn/article12/ggdjdc.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供定制網(wǎng)站全網(wǎng)營(yíng)銷(xiāo)推廣電子商務(wù)微信公眾號(hào)企業(yè)建站營(yíng)銷(xiāo)型網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:[email protected]。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)
主站蜘蛛池模板: 国产精自产拍久久久久久 | 久久频这里精品香蕉久久 | 免费观看一级特黄三大片视频 | 特级毛片8级毛片免费观看 特级毛片免费观看视频 | 全高清特级毛片 | 亚洲欧美日韩综合二区三区 | 在线毛片观看 | 日韩欧美视频在线播放 | 一个人免费观看日本www视频 | 欧美成人香蕉网在线观看 | 成人免费小视频 | 怡红院老首页主页入口 | 69欧美 | 国产精品一区二区久久精品 | 狠狠色丁香婷婷综合小时婷婷 | 欧美精品videos | 成人精品一区二区三区 | 97久久天天综合色天天综合色 | 亚洲视频在线免费 | 国产一区二区三区精品视频 | 亚洲天堂最新网址 | 夜晚福利网站 | 麻豆传媒一区 | 国产成人麻豆tv在线观看 | 91精品宅男在线观看 | 日韩在线一区二区三区 | aaaa欧美高清免费 | 国产aⅴ一区二区 | 亚洲男人的天堂久久精品 | 三级伦理网站 | 国产男女猛烈无遮档免费视频网站 | 特色黄色片 | 国产一级一级毛片 | 99精品视频一区在线视频免费观看 | a级性生活视频 | 日韩美女啪啪 | 国产精品亚洲片夜色在线 | 亚洲涩涩精品专区 | 欧美大片国产在线永久播放 | 亚洲精品a | 91国在线高清视频 |