有大量 socket.io"如何"来创建最简单的聊天室,但我没有发现任何显示如何将其用于更高级的聊天室。
我从头开始创建了一个具有以下特征的聊天系统(使用 php/mysql/ajax):
- 高级会员管理(登录名、头像、个人信息、存储伪专用等)
- 用户可以加入现有聊天室或创建新聊天室
- 可以在每个公共聊天室中创建私人房间,以便与任何人私下交谈
- 可以通过根据成员的伪地址和/或IP地址驱逐成员来管理和调节每个聊天室,删除特定消息等
- 等。。。
问题是我创建的系统不是很可扩展,因为它使用短轮询技术,如果我有太多用户在线,可能会使服务器崩溃。显然,使用 socket.io 可以解决这个问题,但它意味着在服务器端和客户端从 a 到 Z 使用 javascript(我不是 javascript 开发人员,只是一个 javascript 用户)。
我在学习新事物方面没有问题,但是网络上向您展示如何使用 socket.io 进行聊天的大量教程仅限于非常简约的教程(连接,编写,阅读,仅此而已),这对于开始来说很好,但对于更雄心勃勃的项目来说不是很有用。
它还表明,有了 socket.io,数据库就不在图片中,但如何相应地重新考虑您的系统(永久存储用户及其个人信息,检索消息历史记录,过滤所有以前的消息,显示用户连接自己的 15 条以前的消息,从私人房间来回到主要公共房间,同时仍然可以访问您希望在每个房间上收到的所有先前消息, 等等...如果没有数据库,即使在纸上,我也无法弄清楚如何实现所有这些,我在任何地方都没有找到任何关于这一点的信息。
我不希望找到我的php高级聊天室的现有 soket.io 版本,这不是我要找的。我正在寻找全面的教程(免费与否),为我提供使用 socket.io 创建具有上述功能的系统所需的所有背景。
我在网上搜索了两天,但我仍然不知道如何超越最简单的聊天系统。我知道如何编写一些东西并将其推送到所有用户浏览器供他们阅读。它很整洁,但现在呢?
任何参考或建议?
谢谢(对不起我的英语不好)。
PS:我尝试使用"socket.io"和"教程"标签,但即使它们存在,无论出于何种原因,我都不允许使用它们......
有关基于节点的聊天的高级教程。检查这个:
Nodechat.js继续 - 身份验证,配置文件,小马和一个更卑鄙的 socket.io
它是建立在BackBone.js上的Node.js和Socket.js。
对于更好的可扩展聊天系统,您是否尝试过Meteor(www.meteor.com)。它建立在Node.js上,可以轻松连接到MongoDB。
恕我直言,这最适合创建实时 Web 应用程序。
http://udidu.blogspot.co.il/2012/11/chat-evolution-nodejs-and-socketio.html
这是非常好的教程,关于即将与可以创建/加入/离开聊天室并相互交谈的用户构建应用程序。您可以对此进行扩展,并赋予房间的创建者"权力",将他标记为"管理员",然后理论上他可以向服务器发出管理命令,例如"静音用户","禁止用户","删除某条消息"等等。这很简单,因为您所要做的就是从客户端监听这些消息,然后在服务器上采取行动。
因此,如果某个用户在服务器上被标记为"管理员",然后假设他想删除聊天室中某人的消息,那么您在服务器上执行以下操作:(粗略示例)
...
io.sockets.on('connection', function (socket){
socket.on('deleteMessage', messages.delete );
});
var messages = {
save : function(msg){
// saves a message to the DB (which is sorted by rooms)
},
remove: function(user, data){
// check if the 'user' is either an Admin or the person who wrote that message
...
// if it's either one of them, then find that message in the DB, then
// remove it, and update all clients' sockets.
socket.emit('messageRemoved', data);
},
add: function(msg){
// update all clients with current message
},
...(more methods)
}