在做一個websocket的數據推送功能,但是無法使用mock模擬數據,就用下面這種方式進行模擬,思路:node起一個服務後,推送隨機數據。
第一步 可在全局安裝安裝依賴
npm i nodejs-websocket -g
第二步 將下面代碼copy到一個index.js的文件中
//如果沒有該段代碼,客戶端主動斷開連接的話,會拋出tcp.read()異常,導致程序掛掉。
process.on('uncaughtException', function (err) {
console.log(err);
console.log(err.stack);
});
try{
var ws=require("nodejs-websocket")
var server=ws.createServer(function (conn) {
console.log("new connection");
/**
* 定時發送消息
*/
setInterval(()=>{
conn.sendText("send from server:")
},2000)
// 收到信息觸發 接收 //
conn.on("text",function (str) {
console.log("received data:"+str)
conn.sendText("send from server:"+str)
})
// 斷開連接觸發 //
conn.on("close",function (coded,reason) {
console.log("connection closed")
})
// 出錯觸發 //
conn.on("error", function(code,reason) {
console.log('異常關閉', code)
})
}).listen(8088)
}
catch(e)
{
console.log("exception:"+e);
}
第三步 用node執行index.js文件,此時會看到控制檯的下面的這個日誌,說明websocket已經跑起來了。
new connection
第四步 在客戶端的代碼中編寫下面代碼
var ws = new WebSocket("ws://localhost:8088/");// 設置服務器地址
ws.onopen=function(){ // onopen 連接觸發
console.log("websocket open");
ws.onclose=function(){ // onclose 斷開觸發
console.log("websocket close");
}
ws.onmessage =function(e){ // onmessage 接收到信息觸發
console.log(”onmessage:“,e.data);
}
運行客戶端,執行第四步,即可
在切換頁面時記得把websocket關閉
ws.close()