终于迁到Ubuntu下面了,发一下自己的Nodejs Demo,勿喷
终于迁到Ubuntu下面了,发一下自己的Nodejs Demo,勿喷
http://yaoyuxing03.ap01.aws.af.cm/ socket.io
不知道为什么没效果,自己机器上到可以实现回复及时提醒功能,有些地方可能没防XSS,各位就高抬贵手吧,纯属学习用
好的,让我们来详细解析一下这个帖子的内容,并提供一个简单的Node.js示例代码。这个示例将展示如何使用socket.io
实现实时通信功能。
示例代码
首先,我们需要安装必要的依赖包:
npm install express socket.io
然后,创建一个基本的Node.js应用文件,例如server.js
:
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
// 创建一个Express应用
const app = express();
const server = http.createServer(app);
// 设置静态文件目录
app.use(express.static(__dirname));
// 启动服务器监听8080端口
server.listen(8080, () => {
console.log('Server is running on port 8080');
});
// 创建Socket.IO实例并绑定到HTTP服务器
const io = socketIo(server);
// 监听客户端连接事件
io.on('connection', (socket) => {
console.log('A user connected:', socket.id);
// 监听客户端发送的消息
socket.on('chat message', (msg) => {
console.log('Message received:', msg);
// 广播消息给所有连接的客户端
io.emit('chat message', msg);
});
// 监听客户端断开连接事件
socket.on('disconnect', () => {
console.log('User disconnected:', socket.id);
});
});
HTML页面
接下来,创建一个简单的HTML页面,用于与服务器进行实时通信。假设我们将这个页面放在与server.js
相同的目录下,并命名为index.html
:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Socket.IO Chat</title>
<style>
#messages { height: 400px; overflow-y: scroll; }
</style>
</head>
<body>
<div id="messages"></div>
<input id="message" type="text" placeholder="Type a message...">
<button onclick="sendMessage()">Send</button>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
function sendMessage() {
const message = document.getElementById('message').value;
socket.emit('chat message', message);
document.getElementById('message').value = '';
}
socket.on('chat message', function(msg) {
const messagesDiv = document.getElementById('messages');
const newMessage = document.createElement('div');
newMessage.textContent = msg;
messagesDiv.appendChild(newMessage);
messagesDiv.scrollTop = messagesDiv.scrollHeight;
});
</script>
</body>
</html>
解释
- Node.js服务器:我们使用Express框架创建了一个简单的HTTP服务器,并集成了Socket.IO来处理WebSocket连接。
- HTML页面:用户可以通过输入框发送消息,这些消息通过Socket.IO广播给所有连接的客户端,并实时显示在页面上。
XSS防护
为了防止跨站脚本攻击(XSS),你应该对用户输入的数据进行转义或过滤。在上面的示例中,我们没有进行XSS防护,但在实际应用中,你可以在显示用户消息之前使用库如he
来转义HTML实体。
const he = require('he');
socket.on('chat message', function(msg) {
const messagesDiv = document.getElementById('messages');
const newMessage = document.createElement('div');
newMessage.innerHTML = he.encode(msg); // 转义HTML实体
messagesDiv.appendChild(newMessage);
messagesDiv.scrollTop = messagesDiv.scrollHeight;
});
希望这个示例能帮助你理解如何在Node.js中使用socket.io
实现基本的实时通信功能。
根据你的描述,你想分享一个简单的Node.js应用示例,并且提到你在使用socket.io
时遇到了一些问题。我将提供一个基本的Node.js应用示例,该示例使用Express框架和socket.io库来创建一个简单的聊天室应用。这将帮助你了解如何设置环境,并确保socket.io
功能正常工作。
示例代码
首先,确保你的项目中安装了必要的依赖:
npm init -y
npm install express socket.io
然后,创建一个文件(例如app.js
),并添加以下代码:
const express = require('express');
const http = require('http');
const socketIo = require('socket.io');
const app = express();
const server = http.createServer(app);
const io = socketIo(server);
app.get('/', (req, res) => {
res.sendFile(__dirname + '/index.html');
});
io.on('connection', (socket) => {
console.log('A user connected');
socket.on('chat message', (msg) => {
io.emit('chat message', msg);
});
socket.on('disconnect', () => {
console.log('User disconnected');
});
});
server.listen(3000, () => {
console.log('Server is running on port 3000');
});
同时,创建一个index.html
文件在同一个目录下:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Simple Chat Room</title>
<script src="/socket.io/socket.io.js"></script>
<script>
const socket = io();
document.addEventListener('DOMContentLoaded', () => {
const form = document.getElementById('message-form');
const input = document.getElementById('m');
const output = document.getElementById('messages');
form.addEventListener('submit', function(e) {
e.preventDefault();
if (input.value) {
socket.emit('chat message', input.value);
input.value = '';
}
});
socket.on('chat message', function(msg) {
const item = document.createElement('li');
item.textContent = msg;
output.appendChild(item);
});
});
</script>
</head>
<body>
<form id="message-form">
<input id="m" autocomplete="off" />
<button>Send</button>
</form>
<ul id="messages"></ul>
</body>
</html>
运行应用
在Ubuntu系统中运行这个应用:
node app.js
打开浏览器访问http://localhost:3000
,你应该能看到一个简单的聊天室应用。
注意事项
确保服务器能够正确地处理跨域请求或网络配置问题。如果仍然遇到问题,检查防火墙设置或网络连接是否允许访问端口3000。