原生WebSocket API使用起來不太方便,咱們使用Socket.io,它很好地封裝了webSocket接口,提供了更簡單、靈活的接口,也對不支持webSocket的瀏覽器提供了向下兼容。
- 服務端代碼
- 根據不一樣客戶端傳來的消息存儲一下 不一樣的對象
- 須要安裝 npm i socket.io --save
- 下載 socket.io.js
- nodejs 代碼
const socket = require("socket.io");
const http = require('http');
// 建立服務
const server = http.createServer((req,res)=>{
// 容許全部跨域請求
res.setHeader('Access-Control-Allow-Origin', '*');
req.writeHead(200,{'Content-Type':'text/html'})
res.end('')
}).listen(8001)
let pad = null,pc = null , padReady = false , pcReady = false;
// 鏈接socket.io
socket.listen(server).on('connection',(conn)=>{
conn.on('message',(str)=>{
if(str==="Pad"){
pad = conn;
padReady = true;
conn.send('鏈接成功');
}
if(str==="PC"){
pc = conn;
pcReady = true;
}
if(padReady&&pcReady){
if(str==='PC') str='我是PC界面'
pc.send(str);
}
})
conn.on("disconnection",(code, reason) => {
console.log("關閉鏈接")
});
})
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.kuang {
text-align: center;
margin-top: 200px;
}
#mess {
text-align: center
}
.value {
width: 200px;
height: 200px;
border: 1px solid;
text-align: center;
line-height: 200px;
display: inline-block;
}
</style>
</head>
<body>
<div id="mess">正在鏈接...</div>
<div class="kuang">
<div class="value" id="value1">aaaaaaa</div>
<div class="value" id="value2">bbbbbbb</div>
<div class="value" id="value3">ccccccc</div>
</div>
<script src="./js/socket.io.js"></script>
<script>
// 跨域地址
const socket = io('192.168.1.115:8001')
socket.on('connect', () => {
// 鏈接成功
socket.send('Pad')
// 監聽鏈接
socket.on('message', (msg) => {
document.getElementById('mess').innerHTML=msg
// console.log(msg)
})
// 關閉鏈接
socket.on('disconnect', () => {
})
})
document.querySelector(".kuang").onclick = (e)=> {
socket.send(e.target.innerHTML);
}
</script>
</body>
</html>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<style>
.kuang {
text-align: center;
margin-top: 200px;
}
#mess {
text-align: center
}
</style>
</head>
<body>
<div id="mess"></div>
<script src="./js/socket.io.js"></script>
<script>
var mess = document.getElementById("mess");
// 跨域地址
// TODO: 這裏注意一下 不能寫127.0.0.1 或者localhost 否則其餘客戶端訪問不到
const socket = io('192.168.1.115:8001')
socket.on('connect', () => {
// 鏈接成功
socket.send('PC')
// 監聽鏈接
socket.on('message', (msg) => {
mess.innerHTML = msg
// console.log(msg)
})
// 關閉鏈接
socket.on('disconnect', () => {
})
})
</script>
</body>
</html>