分享一个非常精简的 Nodejs 聊天室 Demo,服务器部署在国外~

发布于 1周前 作者 phonegap100 来自 nodejs/Nestjs

分享一个非常精简的 Nodejs 聊天室 Demo,服务器部署在国外~

server 100+行代码,html 客户端 300+行代码,大概一边看一边学写了两天,适合新人练手。 欢迎大家来聊天呀~~~

项目地址: https://github.com/kylescript/nodejs-chat

Demo 地址: http://chat.kyle.net.cn/


35 回复

控制台被玩坏了 但是会被别人提取隐私吧?

想必已经在改 create_chat_cell 了

。。似乎能跨站,楼主修复一下,过滤一下特殊字符和标签啊,这是最基本的安全策略了。

被 alter 玩坏

我擦 公司打开 直接跳 H ?

不是楼主的锅,被玩坏了

被玩坏。。

数据代码没分离啊 输入数据直接被执行了 很危险 兄得

…我凑- -,一群人在里面瞎搞。。

一个跳转,一个 alert 的就来找存在感的人也是够了。嘛~不过我觉得这是楼主不修漏洞也不是什么坏事,就当普及一下 XSS 漏洞的危险吧,居然还有开车的,看来这帮孙子还是加班太少了。。。

楼主,你可以进入聊天室感受一下朋友们的 XSS 攻击。

我也做过类似的 DEMO,做了过滤可能没楼主的那么欢乐 ,http://yeskn.com:2333

打开,然后跳转到了一个 JAV 线上看的网站…

v2er 的资源真的多

被迫跳转到了某视频网站😂

跳回 v2 来了

服务器被二师兄吃掉了

想起来三年前我也写过类似的东西,客户端 150 行,服务端 100 行左右,我猜我的写法不容易这么被玩坏

分享一波 http://zhuangbi.cloud/

附上源码: https://github.com/LaoQi/nodejsChat

function html2Escape(sHtml) {
return sHtml.replace(/[<>&"]/g, © => {
return {’<’:’&lt;’,’>’:’&gt;’,’&’:’&amp;’,’"’:’&quot;’}[c];
});
}

加了个转义。。。被玩坏了。。。先吃饭去了!!!

我用 socket.io 当做测试框架的 Message Center, 和楼主的这个类似:

![Auto Testing](//http://www.tonyiot.com/wp-content/uploads/2018/07/QController_Working.png)

你们就没人能做出个 php 虚拟主机能用的高性能聊天室吗?

不是不能做,而是没什么意思也没钱去驱动我们做,你这么问为什么不自己去做呢?

我这么问,就是想说随便弄个谁都能弄的,不是啥本事,有能耐做个别人做不了的才能显出你的能力。
而且这个玩意,之后你基本不会再继续开发,折腾了半天最后不能善终的项目,终究荒废。
没什么意思也没钱去驱动你做,那你做的这个不打脸?

为什么不自己去做,呵呵,我已经做了呀,有些看似简单的项目,反而才是最复杂的,加功能容易删功能才真难。

做这个在我当时看来这个还算很有意思的,而且本身也只是学习而不是为了炫技,因为代码质量并不高并不值得拿出来看,只是放一起顺手拿出来了而已。你既然做出来了,还问这个问题,大概是为了显出能力?

不用再回了,社区争论这个没有意义,不如继续看看有价值的项目,不用看我这种荒废的项目。

略屌。xss 没处理??

已经被玩坏了

<script>setInterval (()=>{$(‘body’).css(‘background’,‘red’)},300);setInterval (()=>{$(‘body’).css(‘background’,‘yellow’);},600)</script>

你好!很高兴分享一个精简的 Node.js 聊天室 Demo。由于服务器部署在国外,我们假设你已经有一个可以访问的服务器环境,并且已经安装了 Node.js 和 npm。以下是一个简单的实现,使用 WebSocket 来处理实时通信。

首先,确保你安装了 expressws(WebSocket 的 Node.js 实现)库:

npm install express ws

接下来,创建一个简单的服务器:

// server.js
const express = require('express');
const http = require('http');
const WebSocket = require('ws');

const app = express();
const server = http.createServer(app);
const wss = new WebSocket.Server({ server });

wss.on('connection', ws => {
    console.log('New client connected');
    ws.on('message', message => {
        console.log(`Received: ${message}`);
        wss.clients.forEach(client => {
            if (client.readyState === WebSocket.OPEN) {
                client.send(message);
            }
        });
    });

    ws.on('close', () => {
        console.log('Client disconnected');
    });
});

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

这个 Demo 创建了一个简单的 WebSocket 服务器,监听端口 3000。每个新的客户端连接都会广播消息给所有其他连接的客户端。

要运行这个服务器,只需在终端中执行:

node server.js

然后,你可以使用任何 WebSocket 客户端(例如浏览器的开发者工具中的控制台)连接到 ws://<your-server-ip>:3000 并开始聊天。

希望这对你有帮助!如果有任何问题,请随时提问。

回到顶部