• SSE两个页面的相互通信


    两个页面之间互相通信

    首先搭建express框架,然后通过two页面发送数据给服务器,服务器把数据传送给one页面

    在two 中发送数据,在one中显示

    • router/index.js
    var axios = require('axios');
    
    router.get('/sse_server', (req, res) => {
      res.setHeader('Content-Type', 'text/event-stream');
      setInterval(function () {
        console.log(message);
        if (message.length > 0) {
          var msg = message.shift();
          res.write('data:' + msg + '
    
    ');
        }
      }, 1000);
    })
    
    router.get('/one', (req, res) => {
      res.render('one');
    })
    router.get('/two', (req, res) => {
      res.render('two');
    })
    router.get('/ajax', (req, res) => {
      var content = req.query.content;
      message.push(content);
      res.end('ok');
    })
    
    • one.ejs
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>新消息</title>
    </head>
    <body>
      <h1>接受到的消息</h1>
      <script>
        var source = new EventSource('/sse_server');
        var i = 0;    
        var timer = null;
        source.onmessage = function(data){
          console.log(data.data);
          if(timer) return;
          timer = setInterval(function () {
            i++;
            if (i % 4 == 0) {
              document.title = '[   ]接受消息';
            } else if (i % 4 == 1) {
              document.title = '[新  ]接受消息';
            } else if (i % 4 == 2) {
              document.title = '[新消 ]接受消息';
            } else if (i % 4 == 3) {
              document.title = '[新消息]接受消息';
            }
          }, 500);
          
        }
        </script>
    </body>
    </html>
    
    • two.ejs
    <!DOCTYPE html>
    <html lang="en">
    <head>
      <meta charset="UTF-8">
      <meta name="viewport" content="width=device-width, initial-scale=1.0">
      <meta http-equiv="X-UA-Compatible" content="ie=edge">
      <title>Document</title>
      <script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.min.js"></script>
    </head>
    <body>
      <input type="text">
      <button>发送</button>
      <script>
        var btn = document.querySelector('button');
        btn.onclick = function(){
          var value = $('input').val();
          $.get('/ajax',{content:value},function(res){
            console.log(res);
          })
    
        }
      </script>
    </body>
    </html>
    
  • 相关阅读:
    Socket 编程(二)
    【ASP.NET】:Ckeditor+Fckeditor的使用
    Socket编程(一):建立与客户端的连接并接受数据
    Linux基础系列:常用命令(3)
    linux 命令汇总
    Linux基础系列:常用命令(2)
    Linux基础系列:常用命令(1)
    计算机基础系列三:网络基础
    计算机基础系列二:计算机操作系统
    计算机基础系列一:计算机硬件
  • 原文地址:https://www.cnblogs.com/luxiaoyao/p/8881472.html
Copyright © 2020-2023  润新知