linux 使用node 完成websocket 實時推送 wss篇


需要安裝ws包,安裝node教程在上篇文章中

 

 

 服務端代碼 app.js

const fs = require('fs');
const https = require('https');
const WebSocket = require('ws');
const http = require("http");
//添加證書,ws和wss的主要差別就在這里
const keyPath=process.cwd()+'/ssl_certificate_key.key';
const certPath=process.cwd()+'/ssl_certificate.pem';
console.log(keyPath)
console.log(certPath)
const server = https.createServer({
  cert: fs.readFileSync(certPath),
  key: fs.readFileSync(keyPath)
});
const wss = new WebSocket.Server({ server });
wss.on('connection', function connection(ws) {
  /*ws.on('message', function incoming(message) {
    console.log('received: %s', message);
  });*/
   setInterval(() => {           
        var data = {username:"hello"};
        data = JSON.stringify(data);
        var opt = {
            host:'可以填寫域名或者IP',
            port:'可以填寫也可以不填寫,阿里雲服務器注意開放80和443端口',
            path:'如過host填寫IP這里可以寫域名+目錄文件,host填寫域名這里可以填寫路徑',
        }
        var body = '';
        var req = https.request(opt, function(res) {
            //console.log("response: " + res.statusCode);
            res.on('data',function(data){
                body += data;
            }).on('end', function(){
            //請求接口完畢后發送接口數據到客戶端
                ws.send(body)
          console.log(body)
            });
        }).on('error', function(e) {
            console.log("error: " + e.message);
        })
        req.write(data);
        req.end();
    }, 10000)//10000=十秒
 console.log(123);
  ws.send('鏈接成功');
});
 
server.listen(9001);

 

客戶端文件 web.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>
if(window.WebSocket){
  var ws = new WebSocket('wss://這里可以填寫域名或IP:9001');

  ws.onopen = function(e){
    console.log("連接服務器成功");
    // 向服務器發送消息
    ws.send("what`s your name?");
  }
  ws.onclose = function(e){
    console.log("服務器關閉");
  }
  ws.onerror = function(){
    console.log("連接出錯");
  }
  // 接收服務器的消息
  ws.onmessage = function(e){
    let message = "message:"+e.data+"";
    console.log(message);
  }   
}
    </script>
</body>
</html>

 服務端執行node app.js

訪問客戶端打開控制台效果如下

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM