Nodejs - talk to me -- IM工具
Nodejs - talk to me – IM工具
基于node.js+mongodb的在线即时聊天系统:
主要中间件:
展现层: 1.bootstrap 2.jquery
通信层: socket.io
逻辑及持久层: 1.node.js 2.node-mongodb-native
数据库系统:mongodb
http://git.oschina.net/fornane/talk2me-im
ps.代码还很乱~木有时间重构~BUG还略多~o_O
效果图如下,红果果的~哈哈~
求在线运行…
另外 node_modules/
没有 gitignore
掉
live demo??
求给个小果果图
传了一张上去~将就看看~
暂时没有找到比较好的node.js容器,过阵子有时间了去找一个~哈哈~
暂时没有找到比较好的node.js容器,过阵子有时间了去找一个~哈哈~
hello~ 最近还在做node开发么?我们公司做im相关产品,不知道您有没有兴趣聊一下~ 微信 bboalimoe 邮箱 hengyang@petchat.io
顶一下
chat.lalami.la 这个更完整,还有在线视频,基于webrtc
http://chat.lalami.la 一个女同的聊天室
学习下 自豪地采用 CNodeJS ionic
针对“Nodejs - talk to me – IM工具”这个帖子,我们可以实现一个基于 Node.js 和 MongoDB 的简单即时通讯(IM)系统。该系统将使用 socket.io
来实现实时通信,并利用 node-mongodb-native
与 MongoDB 进行数据交互。
示例代码
-
安装依赖:
npm install express socket.io mongodb bootstrap jquery
-
后端代码 (
server.js
):const express = require('express'); const http = require('http'); const socketIo = require('socket.io'); const MongoClient = require('mongodb').MongoClient; const app = express(); const server = http.createServer(app); const io = socketIo(server); // MongoDB 链接 const uri = 'mongodb://localhost:27017'; const dbName = 'talk2me'; const client = new MongoClient(uri, { useNewUrlParser: true, useUnifiedTopology: true }); app.use(express.static(__dirname + '/public')); client.connect(err => { if (err) throw err; console.log("Connected correctly to server"); const db = client.db(dbName); const collection = db.collection('messages'); io.on('connection', socket => { console.log('A user connected'); socket.on('send message', data => { collection.insertOne(data, (err, result) => { if (err) throw err; io.emit('new message', data); }); }); socket.on('disconnect', () => { console.log('User disconnected'); }); }); server.listen(3000, () => console.log('Server is running on port 3000')); });
-
前端代码 (
public/index.html
):<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Talk to Me</title> <link rel="stylesheet" href="/css/bootstrap.min.css"> <script src="/js/jquery.min.js"></script> <script src="/socket.io/socket.io.js"></script> <style> #messages { height: 400px; overflow-y: scroll; } </style> </head> <body> <div class="container"> <h1>Talk to Me</h1> <div id="messages"></div> <input type="text" id="message" placeholder="Type a message..." /> <button id="send">Send</button> </div> <script> var socket = io(); $('#send').click(function() { var message = $('#message').val(); socket.emit('send message', { text: message }); $('#message').val(''); }); socket.on('new message', function(data) { $('#messages').append('<div>' + data.text + '</div>'); $('#messages').scrollTop($('#messages')[0].scrollHeight); }); </script> </body> </html>
解释
-
后端 (
server.js
):- 使用 Express 提供静态文件服务。
- 连接到 MongoDB 并创建一个监听 Socket.IO 连接的服务器。
- 当客户端发送消息时,存储到 MongoDB 并广播给所有连接的客户端。
-
前端 (
index.html
):- 使用 Bootstrap 进行样式设计。
- 通过 jQuery 和 Socket.IO 实现用户界面,使用户可以输入并发送消息,同时接收并显示其他用户的实时消息。
这只是一个简单的实现,实际应用中可能需要添加更多的功能如用户认证、消息加密等。