如何利用nodejs语法实现即时通讯

2024年09月18日 建站教程

如何利用nodejs语法做一个即时通讯功能?下面web建站小编给大家简单介绍一下具体实现代码!

创建服务器

const app = require('express')();
const server = require('http').createServer(app);
const io = require('socket.io')(server);
const port = process.env.PORT || 3000;
 
server.listen(port, () => {
  console.log(`Server listening at http://localhost:${port}`);
});

监听连接和断开事件,发送消息

io.on('connection', (socket) => {
  console.log('a user connected');
  socket.on('disconnect', () => {
    console.log('user disconnected');
  });
  socket.on('chat message', (msg) => {
    console.log('message: ' + msg);
    io.emit('chat message', msg);
  });
});

客户端页面代码

<html>
  <head>
    <title>Chat Room</title>
  </head>
  <body>
    <ul id="messages"></ul>
    <form action="">
      <input id="m" autocomplete="off" /><button>Send</button>
    </form>
    <script src="/static/socket.io/socket.io.js"></script>
    <script>
      const socket = io();
      const form = document.querySelector('form');
      const input = document.querySelector('#m');
      const messages = document.querySelector('#messages');
 
      form.addEventListener('submit', (e) => {
        e.preventDefault(); // 防止页面跳转
        socket.emit('chat message', input.value); // 将消息发送给服务器
        input.value = ''; // 清空消息框
        return false;
      });
 
      socket.on('chat message', (msg) => {
        const li = document.createElement('li'); // 创建新条目
        li.textContent = msg; // 设置新条目的文本内容
        messages.appendChild(li); // 将新条目添加到列表中
      });
    </script>
  </body>
</html>

本文链接:http://so.lmcjl.com/news/13330/

展开阅读全文
相关内容