Node.js 写一个实时通信应用程序
以下是一个简单的实时通信应用程序的示例,使用 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`,即可使用实时通信应用程序。