node-socket.io

node.js+socket.io Demo


node-socket.io_demo.png

init

np init -y 
npm i express socket.io body-parser -S -D
npm start

目錄結(jié)構(gòu)

  • node_modules
  • public
    • css
      • style.css
    • js
      • index.js
      • vue.js
  • views
    • index.html
  • app.js
  • package.json

配置服務(wù) app.js

const http = require("http"); //引入http模塊
const fs = require("fs"); //引入fs模塊
const path = require("path"); //引入path模塊
const express = require('express'); //引入express模塊
const app = express();
const server = require('http').createServer(app); //開啟服務(wù)
const io = require('socket.io')(server); //引入socket.io

.... // 配置路由 下面講到

.... // 這里寫socket.io  下面會(huì)講到

const port = 3000; //端口號(hào)
server.listen(port, err => {
    console.log(err ? 'Server Error' : `http://localhost:${port}`); //開啟服務(wù)
});

路由配置

//讀取文件的方法
const readFile = (filePath) => {
    return new Promise((resolve, reject) => {
        fs.readFile(path.join(__dirname, filePath), 'utf-8', (err, data) => {
            err ? reject(err) : resolve(data);
        })
    })
}

app.use(express.static(path.join(__dirname, '/'))); //開啟公共路徑
//配置根路徑
app.get('/', (req, res) => {
    readFile('./views/index.html').then(data => {
        res.send(data);
    })
});
//配置404
app.use((req, res, next) => {
    res.send("<h1>頁(yè)面找不到了!<a href='/'>點(diǎn)我</a>回家!</h1>")
})

主角 socket.io (服務(wù)端)

//用戶連接觸發(fā)事件
io.on('connection', socket => {
    console.log("用戶連接", socket.request.headers.cookie); //打印出連接用戶id
})

//用戶向服務(wù)器發(fā)送數(shù)據(jù)
socket.on('hi', data => {
     console.log(`用戶發(fā)送:${data}`); //輸出用戶發(fā)送過來(lái)的內(nèi)容
})

//服務(wù)器向用戶發(fā)送數(shù)據(jù)
socket.emit('back_hi', `服務(wù)器:${Date.now()}!`);

//服務(wù)器向所有用戶發(fā)送數(shù)據(jù)
socket.broadcast.emit('back_hi', data);

//用戶斷開連接發(fā)送數(shù)據(jù)
socket.on('disconnect', data => {
        console.log('斷開', data)
})

index.html (客戶端)

 <!DOCTYPE html>
 <html lang="en">
 <head>
     <meta charset="UTF-8">
     <script src="./socket.io/socket.io.js"></script>
     <title>node_demo</title>
 </head>
 <body></body>
 <script src="./public/js/index.js "></script>
 </html>

index.js

 socket = io.connect(); //創(chuàng)建連接

 ocket.emit('hi', '你好'); //發(fā)送數(shù)據(jù)

//收到服務(wù)器返回的事件
 socket.on('back_hi', msg => {
   console.log(msg)
 })

完成通訊

注意事項(xiàng)
  • 配置app.js 的順序不要錯(cuò)
  • 一定要開啟公共路徑
  • 配置根路徑一定要讀取文件發(fā)送客戶端響應(yīng)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容