web前端技术博客
您当前的位置:web前端 > Node.js

Node.js 写一个实时通信应用程序

作者:只会切图的前端 发布时间:2023-04-17 21:10:07 浏览量:2

以下是一个简单的实时通信应用程序的示例,使用 Node.js 和 Socket.io:

1. 安装依赖:

```
npm install express socket.io
```

2. 创建一个 `index.js` 文件,引入依赖:

```javascript
const express = require('express');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);

// 设置静态文件目录
app.use(express.static(__dirname + '/public'));

// 监听端口
http.listen(3000, () => {
  console.log('listening on *:3000');
});
```

3. 创建一个 `public` 文件夹,用于存放客户端代码。

4. 在 `public` 文件夹中创建一个 `index.html` 文件,添加以下代码:

```html
<!DOCTYPE html>
<html>
  <head>
    <title>实时通信应用程序</title>
  </head>
  <body>
    <h1>实时通信应用程序</h1>
    <div id="messages"></div>
    <form id="message-form">
      <input type="text" id="message-input" />
      <button type="submit">发送</button>
    </form>

    <script src="/socket.io/socket.io.js"></script>
    <script>
      const socket = io();

      // 监听新消息
      socket.on('message', (data) => {
        const messages = document.getElementById('messages');
        const message = document.createElement('div');
        message.innerText = data;
        messages.appendChild(message);
      });

      // 发送消息
      const form = document.getElementById('message-form');
      form.addEventListener('submit', (event) => {
        event.preventDefault();
        const input = document.getElementById('message-input');
        const message = input.value;
        input.value = '';
        socket.emit('message', message);
      });
    </script>
  </body>
</html>
```

5. 在 `index.js` 中添加以下代码:

```javascript
// 监听连接事件
io.on('connection', (socket) => {
  console.log('a user connected');

  // 监听消息事件
  socket.on('message', (data) => {
    console.log('message: ' + data);
    io.emit('message', data);
  });

  // 监听断开连接事件
  socket.on('disconnect', () => {
    console.log('user disconnected');
  });
});
```

6. 运行应用程序:

```
node index.js
```

7. 在浏览器中打开 `http://localhost:3000`,即可使用实时通信应用程序。

发表评论
验证码:

相关文章

    无相关信息
联系我
粤ICP备17092958号