基于 Node.js 的 Socket.IO 是一个非常流行的实时通信框架,使用它可以很方便地搭建 Socket 服务器。以下是一个简单的 Socket 服务器示例:
javascript
// 引入 Socket.IO
const express = require('express');
const app = express();
const http = require('http').createServer(app);
const io = require('socket.io')(http);
// 设置静态文件目录
app.use(express.static('public'));
// 客户端连接
io.on('connection', (socket) => {
console.log('a user connected');
// 客户端发送的消息
socket.on('chat message', (msg) => {
console.log('message: ' + msg);
// 向所有客户端广播消息
io.emit('chat message', msg);
});
// 客户端断开连接
socket.on('disconnect', () => {
console.log('user disconnected');
});
});
// 启动服务器
http.listen(3000, () => {
console.log('listening on *:3000');
});
这段代码实现了一个基本的聊天室功能:
1. 引入 Socket.IO 并创建 Express 服务器。
2. 设置静态文件目录,用于存放客户端代码。
3. 客户端的连接和断开连接事件。
4. 客户端发送的消息事件,并将消息广播给所有连接的客户端。
5. 启动服务器并 3000 端口。
要运行这个服务器,需要先安装 Socket.IO 和 Express:
bash
npm install express socket.io
然后在项目根目录创建 `public` 目录,并在其中添加一个 `index.html` 文件,内容如下:
html
{ margin: 0; padding: 0; box-sizing: border-box; }
body { font: 13px Helvetica, Arial; }
form { background: #000; padding: 3px; position: fixed; bottom: 0; width: 100%; }
form input { border: 0; padding: 10px; width: 90%; margin-right: 0.5%; }
form button { width: 9%; background: rgb(130, 224, 255); border: none; padding: 10px; }
#messages { list-style-type: none; margin: 0; padding: 0; }
#messages li { padding: 5px 10px; }
#messages li:nth-child(odd) { background: #eee; }
var socket = io();
$('form').submit(function(e) {
e.preventDefault(); // prevents page reloading
socket.emit('chat message', $('#m').val());
$('#m').val('');
return false;
});
socket.on('chat message', function(msg) {
$('#messages').append($('
});
这段代码实现了一个简单的聊天室界面,并使用 Socket.IO 客户端库与服务器进行实时通信。
要启动这个 Socket 服务器,只需运行以下命令:
bash
node server.js
然后在浏览器中访问 `http://localhost:3000` 即可。多个客户端同时连接后,在聊天框中输入消息并发送,所有连接的客户端都会收到消息。
这只是一个简单的示例,实际应用中可以根据需求进一步扩展功能,比如添加用户名、房间管理、消息推送等。
查看详情
查看详情