linux 安装node 使用websocke 请求php接口完成实时数据推送

首先安装node,

执行命令

wget https://nodejs.org/dist/v12.18.1/node-v12.18.1-linux-x64.tar.xz

然后解压

tar -xvf node-v12.18.1-linux-x64.tar.xz

编辑 vim /etc/profile 在最下面添加 export PATH=$PATH: 后面跟上 node 下 bin 目录的路径

export PATH=$PATH:/www/wwwroot/node-v12.18.1-linux-x64/bin

执行 source /etc/profile

执行node -v 查看版本号是否安装成功。

 

在网站目录使用npm安装websocket

npm install nodejs-websocket --save

创建app.js用来做服务端

var ws = require("nodejs-websocket");
console.log("开始建立连接...")
var http = require("http");
var server = ws.createServer(function(conn){
conn.on("text", function (str) {
setInterval(() => { 
var data = {username:"hello",password:"123456"};
data = JSON.stringify(data);
var opt = {
host:'接口服务器IP',
port:'80',
method:'POST',
path:'接口地址',
headers:{
"Content-Type": 'application/json',
"Content-Length": data.length
}
}
var body = '';
var req = http.request(opt, function(res) {
//console.log("response: " + res.statusCode);
res.on('data',function(data){
body += data;
}).on('end', function(){
  //请求接口完毕后发送接口数据到客户端
   conn.sendText(body)
   console.log(body)
});
}).on('error', function(e) {
console.log("error: " + e.message);
})
req.write(data);
req.end();
}, 10000)


})
conn.on("close", function (code, reason) {
console.log("关闭连接")
});
conn.on("error", function (code, reason) {
console.log("异常关闭")
});
}).listen(9001)
console.log("WebSocket建立完毕")

 

 

随便创建一个php文件当接口地址

<?php
echo "创建日期是 " . date("Y-m-d h:i:s") ."id=>".rand(1,999);
?>

 

创建客户端文件

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>
        var mess = document.getElementById("mess");
        if(window.WebSocket){
            var ws = new WebSocket('ws://120.78.0.130:9001');
 
            ws.onopen = function(e){
                console.log("连接服务器成功");
                ws.send("game2");
            }
            ws.onclose = function(e){
                console.log("服务器关闭");
            }
            ws.onerror = function(){
                console.log("连接出错");
            }
 
            ws.onmessage = function(e){
                var time = new Date();
                mess.innerHTML+=time+"的消息:"+e.data+"<br>"
            }
        }
    </script>
</body>
</html>

 

首先执行服务端文件

node app.js

 

 服务端成功开启时,打开客户端web.html文件就会定时接收到服务端发送过来的数据

 

posted @ 2020-07-28 16:51  孤久  阅读(266)  评论(0编辑  收藏  举报