首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我在哪里可以找到soket.io高级教程的多室聊天?

我在哪里可以找到soket.io高级教程的多室聊天?
EN

Stack Overflow用户
提问于 2012-04-17 12:26:49
回答 3查看 4.3K关注 0票数 2

有大量的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“和”教程“标记,但是即使它们存在,出于任何原因,我也不允许使用它们.

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-04-20 08:18:57

如果你需要一个高级教程基于节点的聊天。检查一下这个:

Nodechat.js继续-身份验证、配置文件、小马和更普通的socket.io

这是Node.js和Socket.Js建立在BackBone.Js上的。

票数 3
EN

Stack Overflow用户

发布于 2012-04-17 12:31:22

为了获得更好的可伸缩聊天系统,您是否尝试过Meteor (www.meteor.com)。它是建立在Node.Js之上的,并且很容易连接到MongoDB。

IMHO,这是创建实时web应用程序的最佳方法.

票数 0
EN

Stack Overflow用户

发布于 2013-05-08 11:19:28

http://udidu.blogspot.co.il/2012/11/chat-evolution-nodejs-and-socketio.html

这是一个非常好的教程,即将与那些可以创建/加入/离开聊天室并相互交谈的用户一起构建一个应用程序。您可以对此进行扩展,并赋予房间的创建者“权限”,将其标记为"admin“,然后理论上他可以向服务器发出管理命令,例如”静音用户“、”禁止用户“、”删除特定消息“等等。这非常简单,因为您所要做的就是从客户端监听这些消息,然后在服务器上运行。

因此,如果某个用户在服务器上被标记为"Admin“,然后让我们说,他想删除聊天室中某人的消息,那么您可以在服务器上这样做:(粗略示例)

代码语言:javascript
复制
...
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)
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10191249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档