websocket 的应用 socket.io - 前端笔记-一,方法 ① on 监听事件 ② emit 触发 事件 node代码 express框架的 var&...

学习笔记

点滴记忆
回忆过往
首页>> web后端 >>websocket 的应用 socket.io - 前端笔记
一,方法
    ① on 监听事件
    ② emit 触发 事件

    
node代码 express框架的 

var app = require("express")();
var server = require("http").Server(app);
var io = require("socket.io")(server);

server.listen(80);
// WARNING: app.listen(80) will NOT work here!

// 静态文件
app.use(require("express").static("public"));

app.get("/"function(reqres) {
  // res.sendFile(__dirname + "/index.html");
  res.redirect("/index.html");
});

let alls = [];
let username;

io.on("connection"function(socket) {
  // 登录 操作
  socket.on("login"res => {
    username = res//设置 用户名
    alls.push(res);
    socket.emit("tologin"alls);
    io.emit("all"username + "登录");
  });

  // 监听用户发送过来的 消息 进行广播
  socket.on("message"res => {
    console.log(res);
    io.emit("all"res);
  });

  // 用户离开操作
  socket.on("disconnect"function() {
    io.emit("userto""用户离开了");
    let a = alls.findIndex(x => {
      x = username;
    });
    alls.splice(a1);
  });
});



html 代码   注意 这个html代码  在express 静态资源目录  public 目录下 



<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>

  <!-- // 登录  -->
  <div class="box1" style="display: block;">

    <input type="text" id="username">
    <button id="xiuname">设置名称</button>

  </div>

  <!-- 聊天 -->
  <div class="box2" style="display: none;">
    <ul id="ul">

    </ul>

    <div id="ids"></div>
    <input type="text" id="in">
    <button>发送消息</button>
  </div>

  <script src="https://cdn.bootcss.com/jquery/3.4.1/jquery.js"></script>
  <script src="https://cdn.bootcss.com/socket.io/2.3.0/socket.io.js"></script>
  <script>
    var socket = io.connect('http://localhost');

    $('#xiuname').on('click', () => {

      let usernmae = $('#username').val()

      if (!usernmaereturn;
      // 发送服务器
      socket.emit('login'usernmae)

    })

    // 监听 登录成功
    socket.on('tologin', (res=> {

      $('.box1').css({ 'display''none' });
      $('.box2').css({ 'display''block' });

      console.log(res);

      res.forEach(item => {
        $('#ul').append(`
        <li>${item}用户</li>
      `)
      });

      $('#ids').html(`
      <div>${res}登录了<div>
      `)
    })
    // 发送消息
    $('button').on('click', () => {
      let row = $('#in').val()
      // console.log(row);
      socket.emit('message'row)

    })

    // 接收消息
    socket.on('all', (res=> {
      $('#ids').append(`
      <div>${res}---消息<div>
      `)

    })

  </script>
</body>

</html>






×

感谢您的支持,我们会一直保持!

扫码支持
请土豪扫码随意打赏

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

打赏作者
版权所有,转载注意明处:前端笔记 » websocket 的应用 socket.io

发表评论

路人甲 表情
Ctrl+Enter快速提交

网友评论(0)