zoukankan      html  css  js  c++  java
  • 基于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>
    

      

  • 相关阅读:
    SPS安装过程中配置服务器场帐户设置页面不能正常显示以及IIS中SPS管理站点未配置成功问题的原因
    Outlook中时间的自然语言支持
    hashtable与HashMap区别
    IE浏览器Encoding Autoselect,UTF8编码的中文页面白屏
    ASP.NET中Web DataGrid的使用指南
    HTML+CSS模拟的Tab控件
    DIV+CSS定位之相对定位与绝对定位
    javascript中apply方法
    Windows工作流基类库(WF)探密
    中国居民身份证号码验证
  • 原文地址:https://www.cnblogs.com/lydialee/p/6590595.html
Copyright © 2011-2022 走看看