服務端
在windows下執行 node server.js
也可參照我的前一篇部署https
var httpServ = require('http') var WebSocketServer = require('ws').Server; var app = httpServ.createServer().listen(8080); var ws = new WebSocketServer({ server: app }); ws.on('connection', function(wsConnect) { wsConnect.on('message', function(message) { console.log(message); wsConnect.send('reply'); }); wsConnect.on('close', function (code, reason) { console.log('關閉連接', code, reason) }); wsConnect.on('error', function (code, reason) { console.log('異常關閉', code, reason) }); })
客戶端
這里介紹兩種客戶端,一種是微信小程序,一種是html網頁。
微信小程序
代碼示例:
xxx.wxml
<button bindtap='startClick'>連接</button> <button bindtap='sendClick'>發送</button> <button bindtap='closeClick'>斷開</button>
xxx.js
Page({ /** * 頁面的初始數據 */ data: { isConnect: null, }, startClick(even) { wx.connectSocket({ url: 'ws://localhost:8080/', method: 'GET', success: (res) => { isConnect: true console.log("連接成功", res) }, fail: (res) => { isConnect: false console.log("連接失敗", res) } }); wx.onSocketOpen((res) => { console.log('WebSocket連接已打開!') }); wx.onSocketError((res) => { console.log('WebSocket連接打開失敗,請檢查!') }) }, sendClick: function (even) { wx.sendSocketMessage({ data: "From微信小程序 web socket" }) }, closeClick(even) { wx.closeSocket({ success: (res) => { console.log("關閉成功...") }, fail: (res) => { console.log("關閉失敗...") } }); wx.onSocketClose((res)=> { console.log("WebSocket連接已關閉") }) }, /** * 生命周期函數--監聽頁面加載 */ onLoad(options) { wx.onSocketMessage((res) => { console.log(res.data) console.log(res) }) } })
效果截圖:
網頁
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="initial-scale=1.0, maximum-scale=1.0, user-scalable=no" /> <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1" /> <title>WebSocket</title> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" rel="stylesheet"> <link href="https://cdn.bootcss.com/bootstrap/3.3.7/css/bootstrap.min.css" rel="stylesheet"> <style> body{ width: 96%; margin-left: 2%; margin-top: 20px; } </style> </head> <body> <div class="btn-group box" role="group" aria-label="..."> <button type="button" class="btn btn-default">Oppo</button> <button type="button" class="btn btn-default">Vivo</button> <button type="button" class="btn btn-default">Apple</button> </div> <div class="page-header"> <h4 class="info">服務器返回信息列表:</br></br></h4> </div> <script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.js"></script> <script src="https://cdn.bootcss.com/bootstrap/3.3.7/js/bootstrap.min.js"></script> <script> if (window.WebSocket) { var ws = new WebSocket('ws://127.0.0.1:8080'); ws.onopen = function () { console.log('連接服務器成功!'); ws.send('startting...'); } ws.onclose = function () { console.log('服務器關閉'); } ws.onerror = function () { console.log("連接出錯"); } ws.onmessage = function (e) { document.querySelector(".box").onclick = function (e) { ws.send('當前點擊框的內容為:<font style="color:red;" >' + e.target.innerHTML+'</font>'); } $('.info').append(e.data + '</br></br>'); } } </script> </body> </html>
參考鏈接:
1. https://blog.csdn.net/potato512/article/details/79991342
2. https://blog.csdn.net/medivhq/article/details/75021382