基於node的websocket示例


websocket:用語服務器端主動向客戶端推送消息

 

本例基於koa框架編寫用例:服務器端需要安裝相關模塊 koa koa-socket co等

服務器端腳本:(需要安裝相關模塊 koa koa-socket co等)
//服務端
const Koa = require( 'koa' )
const IO = require( 'koa-socket' )
const co = require( 'co' )

const app = new Koa()
const io = new IO({
    namespace:"mysocket",
    ioOptions:{
      path:'/restapi/websocketstock'
    }
})
const TIME = 3000;  //定時向客戶端發送消息
let TimerId = null;

io.use( co.wrap( function *( ctx, next ) {
  let start = new Date()
  yield next()
  console.log( `response time: ${ new Date() - start }ms` )
}))

// io.use( ... );

io.on("connection",function(){  //連接成功
    console.log("successfully connect to websocket");
});

//定時向客戶端推送消息
function sendToClient(){
    TimerId = setInterval(function(){
        io.broadcast('stockchallenge', {"userNum":parseInt(Math.random()*100)});
    },TIME);
}

//監控客戶端發來的消息源
io.on('messageClient', ( ctx, data ) => {
    console.log("來自客戶端的消息");
    console.log(data);
})

io.attach( app );
sendToClient();

app.listen( 3004 );
console.log("app is listening at 3004");

  

 

客戶端腳本:在客戶端,websocket需要瀏覽器支持才能使用,不過有許多js腳本對瀏覽器做了兼容性封裝,本例以socket.io為例,

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
<div>users count:   <span id="count"></span></div>
<script src="js/socket.io.js"></script>
<script>


var socket = io.connect( "http://機器名:3004/mysocket",{
    path:"/restapi/websocketstock"
});

socket.on("connect",function(){
    console.log("連接成功");
});

var sessionId;
//監控服務器端的消息 stockchallenge
socket.on("stockchallenge", function (data) {
       console.log("來自服務器端的消息",data);
       document.getElementById("count").innerHTML = data.userNum;

 });


</script>
</body>
</html>

  


免責聲明!

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



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