🗣 Wd提问: js创建socket服务器
🤖 Ai回答: 在 JavaScript 中创建一个 Socket 服务器,通常使用 Node.js 和 Socket.IO 或原生的 `net` 模块。以下是两种常见方式:
✅ 方法一:使用 Socket.IO(推荐)
Socket.IO 是一个流行的库,支持 WebSocket、长轮询等,兼容性好,适合实时通信。
1、安装依赖
bash
npm init -y
npm install express socket.io
2、创建服务器代码(server.js)
javascript
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
// 创建 Express 应用
const app = express();
// 创建 HTTP 服务器
const server = http.createServer(app);
// 创建 Socket.IO 实例
const io = socketIo(server);
// 监听客户端连接
io.on('connection', (socket) = {
console.log('用户已连接:', socket.id);
// 接收客户端消息
socket.on('message', (data) = {
console.log('收到消息:', data);
// 广播给所有客户端(包括自己)
io.emit('message', data);
});
// 用户断开连接
socket.on('disconnect', () = {
console.log('用户已断开:', socket.id);
});
});
// 静态文件服务(可选)
app.use(express.static('public'));
// 启动服务器
const PORT = 3000;
server.listen(PORT, () = {
console.log(`Socket 服务器运行在 http://localhost:${PORT}`);
});
3、创建前端页面(public/index.html)
html
<!DOCTYPE html
<html lang=zh
<head
<meta charset=UTF-8 /
<titleSocket 示例</title
<script src=https://cdn.socket.io/4.0.0/socket.io.min.js</script
</head
<body
<input type=text id=msgInput placeholder=输入消息 /
<button onclick=sendMessage()发送</button
<ul id=messages</ul
<script
const socket = io();
// 接收服务器消息
socket.on('message', (data) = {
const li = document.createElement('li');
li.textContent = data;
document.getElementById('messages').appendChild(li);
});
function sendMessage() {
const input = document.getElementById('msgInput');
const msg = input.value;
if (msg) {
socket.emit('message', msg);
input.value = '';
}
}
</script
</body
</html
4、运行服务器
bash
node server.js
然后打开浏览器访问:[http://localhost:3000](http://localhost:3000)
✅ 方法二:使用 Node.js 原生 `net` 模块(TCP)
如果你需要的是 TCP 级别的 socket,可以使用 `net` 模块。
示例代码(tcp-server.js)
javascript
const net = require('net');
const server = net.createServer((socket) = {
console.log('客户端连接:', socket.remoteAddress);
// 发送欢迎消息
socket.write('欢迎连接到 TCP 服务器\n');
// 接收数据
socket.on('data', (data) = {
console.log('收到:', data.toString());
socket.write(`回显: ${data.toString()}\n`);
});
// 断开连接
socket.on('end', () = {
console.log('客户端断开:', socket.remoteAddress);
});
// 错误处理
socket.on('error', (err) = {
console.error('Socket 错误:', err.message);
});
});
server.listen(8080, () = {
console.log('TCP 服务器运行在端口 8080');
});
使用 `telnet` 测试:
bash
telnet localhost 8080
总结
| 方式 | 用途 | 推荐场景 |
|
| Socket.IO | Web 实时通信(HTTP + WebSocket) | 聊天室、通知、在线游戏等 |
| net 模块 | TCP 二进制通信 | 自定义协议、设备通信等 |
✅ 如果你是做网页实时交互(如聊天),强烈推荐 Socket.IO。
需要我帮你生成完整项目结构或加入房间功能吗?
📣 商家广告:





0
IP地址: 52.88.30.140
搜索次数: 8
提问时间: 2025-12-28 21:41:02
本站所有
❓
问答
均由Ai自动分析整理,内容仅供参考,若有误差请用“联系”里面信息通知我们人工修改或删除。
本站由
🟢
豌豆Ai
提供技术支持,使用的最新版:
豌豆Ai站群搜索引擎系统 V.25.10.25
搭建本站。