在我的网站上,我已经建立了一个聊天室,支持多个房间。当用户加入这个房间时,一个会话会被放置到数据库中,这样如果他们试图再次在另一个浏览器窗口中加入这个房间,他们就会被锁在外面。
它是这样工作的
1. Join the chatroom page
2. Connect to chatroom #main
If the user has a session in the database for #main
--- Block user from joining
else
--- Load chatroom
当聊天室关闭客户端或用户使用/quit命令终止那里的连接时,他们的所有会话都会被删除,这很
当在我的聊天室中替换东西时,它会以“HTML字符实体”的形式出现在框中。但是,我想让它恢复过来,当它在聊天室中显示时,实际上显示键入的字符。因此,我使用下面的代码来阻止任何html进入聊天室,并通过将某些html字符替换为这些实体来破坏聊天室(我希望在查看其他实体之前获得其中的一两个实体,我知道还有更多)。
Javascript
var str1 = this.value.replace(/>/g, '<');
if (str1!=this.value) this.value=str1;
我正在运行一个聊天室()与mysql+php。我有一个专用的服务器来运行这个脚本,因为它可以消耗大量的资源。它对100个并发用户都很好。然而,最近有一个用户威胁我们要杀死这个聊天室,他正在成功地这样做:
只有40个用户,聊天室已经死了。传递一条信息需要10-20秒。MySql消耗了300%的CPU。然而,对于100个用户(当它没有受到攻击时),聊天室只使用200-300%的CPU。我检查了下面的内容,以确保他没有使用/DDoSing我们的服务器。
1 - Limited 3 requests per seconds.
2 - Analyzed access.log to see any wei
在AJAX书籍的指导下,我正在制作一个AJAX聊天室,教我如何使用JSON和eval()函数。这个聊天室有正常的聊天功能和白板功能。当一个正常的文本消息以JSON格式来自php服务器时,浏览器中的javascript会这样做:
没有白板命令
function importServerNewMessagesSince(msgid) {
//loadText() is going to return me a JSON object from the server
//it is an array of {id, author, message}
var latest =
我在Firebase上遇到了一些问题。我想做的是,如果聊天室不存在,创建一个新的聊天室,否则,获取已有的聊天室ID。到目前为止,我所实现的是:
数据库结构如下:
chatrooms
chatroomID
participantID1 *(can be senderKey or recipientKey)*
participantID2 *(can be senderKey or recipientKey)*
latestMessage
我创建新聊天室的代码如下:
let promiseRoomKey = new Promise