Nodejs教学项目microblog新版发布,利用socket.io和mongoose实现微博分发和数据库操作

Nodejs教学项目microblog新版发布,利用socket.io和mongoose实现微博分发和数据库操作

没有点对点,是broadcast

3 回复

Node.js 教学项目 microblog 新版发布,利用 socket.io 和 mongoose 实现微博分发和数据库操作

我们很高兴地宣布,最新的 microblog 项目现已发布!这一版本不仅增加了实时更新功能,还优化了数据库操作。通过结合使用 socket.iomongoose,用户现在可以享受到更加流畅的微博体验。

实现概述

  • socket.io:用于实现实时通信,使用户能够即时看到其他用户的微博更新。
  • mongoose:作为 MongoDB 的 ODM(对象数据映射)工具,简化了与数据库的交互。

安装依赖

首先,确保你已经安装了以下依赖:

npm install express mongoose socket.io

后端代码

在后端,我们将设置一个简单的 Express 服务器,并配置 socket.io 以处理实时通信。同时,使用 mongoose 连接 MongoDB 并执行 CRUD 操作。

const express = require('express');
const mongoose = require('mongoose');
const http = require('http');
const socketIo = require('socket.io');

const app = express();
const server = http.createServer(app);
const io = socketIo(server);

// 连接 MongoDB
mongoose.connect('mongodb://localhost:27017/microblog', {
    useNewUrlParser: true,
    useUnifiedTopology: true
});

// 定义微博模型
const PostSchema = new mongoose.Schema({
    content: String,
    createdAt: { type: Date, default: Date.now }
});
const Post = mongoose.model('Post', PostSchema);

// 处理 POST 请求
app.post('/posts', (req, res) => {
    const post = new Post(req.body);
    post.save()
        .then(() => {
            // 广播新微博
            io.emit('newPost', req.body);
            res.json(post);
        })
        .catch(err => res.status(400).json(err));
});

// 设置 socket.io
io.on('connection', (socket) => {
    console.log('A user connected');

    // 监听新微博事件
    socket.on('newPost', (data) => {
        io.emit('newPost', data);
    });

    socket.on('disconnect', () => {
        console.log('User disconnected');
    });
});

server.listen(3000, () => console.log('Server running on port 3000'));

前端代码

在前端,我们将使用 JavaScript 来监听新微博事件,并动态更新页面。

<!DOCTYPE html>
<html>
<head>
    <title>Microblog</title>
</head>
<body>
    <div id="posts"></div>
    <script src="/socket.io/socket.io.js"></script>
    <script>
        const socket = io();

        socket.on('newPost', (data) => {
            const postsDiv = document.getElementById('posts');
            const postElement = document.createElement('div');
            postElement.textContent = data.content;
            postsDiv.appendChild(postElement);
        });
    </script>
</body>
</html>

总结

通过结合使用 socket.iomongoose,我们实现了微博的实时更新和高效的数据库操作。希望这个项目能帮助大家更好地理解如何在实际应用中使用这些技术。如果你有任何问题或建议,请随时在 GitHub 上提交 issue 或 pull request!


希望这段内容对你有帮助!如果有任何具体问题或需要进一步的详细信息,请告诉我。


后续会添加 让相互关注的人才能被分发到微薄。 再有就是你说的点对点的直接私信

别急,才写。。。

Nodejs教学项目microblog新版发布,利用socket.io和mongoose实现微博分发和数据库操作

我们很高兴地宣布,microblog项目的最新版本已经发布!在这个新版本中,我们引入了使用Socket.IO进行实时微博消息分发,并利用Mongoose进行数据库操作。这样可以让你更方便地管理微博数据,并实现实时更新功能。

主要特性

  • 实时消息推送:通过Socket.IO实现微博消息的实时分发。
  • 数据库操作:使用Mongoose与MongoDB进行微博数据的存储和查询。

安装依赖

首先,确保安装了以下依赖:

npm install express mongoose socket.io

示例代码

下面是主要文件和代码片段:

server.js

这是服务器端的主要入口文件,负责启动服务器并设置Socket.IO连接。

const express = require('express');
const http = require('http');
const mongoose = require('mongoose');
const socketIo = require('socket.io');

const app = express();
const server = http.createServer(app);
const io = socketIo(server);

// 连接MongoDB
mongoose.connect('mongodb://localhost:27017/microblog', { useNewUrlParser: true, useUnifiedTopology: true });

// 创建一个简单的Schema
const PostSchema = new mongoose.Schema({
    username: String,
    content: String,
    createdAt: { type: Date, default: Date.now }
});

const Post = mongoose.model('Post', PostSchema);

io.on('connection', (socket) => {
    console.log('a user connected');

    // 实时接收微博消息
    socket.on('new-post', async (data) => {
        const post = new Post(data);
        await post.save();

        // 广播新的微博消息给所有客户端
        io.emit('new-post', data);
    });

    socket.on('disconnect', () => {
        console.log('user disconnected');
    });
});

server.listen(3000, () => {
    console.log('Server is running on port 3000');
});
client.js

这是客户端的主要文件,用于发送和接收微博消息。

const socket = io('http://localhost:3000');

document.getElementById('post-form').addEventListener('submit', function(e) {
    e.preventDefault();

    const username = document.getElementById('username').value;
    const content = document.getElementById('content').value;

    socket.emit('new-post', { username, content });
});

socket.on('new-post', function(data) {
    const container = document.getElementById('posts-container');
    const postElement = document.createElement('div');
    postElement.textContent = `${data.username}: ${data.content}`;
    container.appendChild(postElement);
});

总结

这个新版本的microblog项目展示了如何结合Express、Socket.IO和Mongoose来创建一个具有实时通信和数据库支持的微博应用。希望这个项目能够帮助你在学习Node.js和实时Web开发方面取得进步!

如果您有任何问题或建议,请随时在GitHub上提交issue。

回到顶部